fix(ftp): 控制通道超时改字节间隔语义,保活 NOOP 可续命会话
- lftpd_inet_read_line 预算原为「整行总时长」:t0 只在入口置一次, 保活型客户端的零散短行会被 30s 总预算误掐,会话周期被关闭 - 改为任何字节到达即重置 t0(字节间隔超时);空闲回收语义不变, 零字节静默满预算仍判超时释放 - 台架 2026-11-13:FileZilla 下载失败三方互证闭环——MobaXterm 单连接成功、本地探针服务器捕获 FileZilla 第二条控制连接行为、 ftplib 主机侧下载/上传全过 - 编译 0 错误 0 警告(keil_build)
This commit is contained in:
@@ -162,6 +162,12 @@ int lftpd_inet_read_line(int socket, char *buffer, size_t buffer_len)
|
||||
}
|
||||
|
||||
total_read_len += read_len;
|
||||
/* 预算语义="字节间隔超时"而非"整行总时长":收到任何字节即证明对端
|
||||
* 存活,重置 t0。原形态下 t0 只在入口置一次,慢速/保活型客户端的零散
|
||||
* 短行会被 30s 总预算误掐(台架 2026-11-13:FileZilla 会话周期性
|
||||
* "control channel closed by peer (ret=-1)",NOOP 保活救不回来)。
|
||||
* 空闲回收语义不变:零字节静默满预算仍由 rem==0 判超时释放。 */
|
||||
t0 = xTaskGetTickCount();
|
||||
|
||||
char *p = strstr(buffer, "\r\n");
|
||||
if (p != NULL) {
|
||||
|
||||
@@ -47,10 +47,10 @@ dhara 失败类 +84;RO 另 +208,全是该失败类名表)→ `ER_IROM1`
|
||||
<!-- MEM_SNAPSHOT:BEGIN generated by scripts/check_mem_numbers.py -->
|
||||
| 区域 | 用量 | 容量 | 占比 |
|
||||
|---|---|---|---|
|
||||
| ER_IROM1 | 287,964 B (281.21 KB) | 1,048,576 B (1024 KB) | 27.5% |
|
||||
| ER_IROM1 | 287,968 B (281.22 KB) | 1,048,576 B (1024 KB) | 27.5% |
|
||||
| RW_IRAM1 | 97,024 B (94.75 KB) | 131,072 B (128 KB) | 74.0% |
|
||||
| RW_CCM | 57,376 B (56.03 KB) | 65,280 B (64 KB) | 87.9% |
|
||||
| **Flash (ROM 合计)** | **290,044 B (283.2 KB)** | 1,048,576 B (1024 KB) | **27.7%** |
|
||||
| **Flash (ROM 合计)** | **290,048 B (283.2 KB)** | 1,048,576 B (1024 KB) | **27.7%** |
|
||||
<!-- MEM_SNAPSHOT:END -->
|
||||
|
||||
各区的容量与常量来源:
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<!-- MEM_BUDGET:BEGIN generated by scripts/ram_baseline.py -->
|
||||
| 区域 | 用量 | 容量 | 占比 | 门禁(≤92%) |
|
||||
|---|---|---|---|---|
|
||||
| ER_IROM1 (Flash) | 287,964 B | 1,048,576 B | 27.5% | 参考 |
|
||||
| ER_IROM1 (Flash) | 287,968 B | 1,048,576 B | 27.5% | 参考 |
|
||||
| RW_CCM | 57,376 B | 65,280 B | 87.9% | PASS |
|
||||
| UNINIT_CCM | 48 B | 256 B | 18.8% | 参考 |
|
||||
| RW_IRAM1 | 97,024 B | 131,072 B | 74.0% | PASS |
|
||||
|
||||
@@ -21,4 +21,4 @@ date code ro rw zi er_irom1 er_pct iram1 iram1_pct ccm ccm_pct top_rwzi
|
||||
2026-11-09 255160 31204 2080 152152 286364 27.3 96808 73.9 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5296;sb_link.o=4376;ch395f.o=4162;console_log.o=4132
|
||||
2026-11-10 255160 31204 2080 152152 286364 27.3 96808 73.9 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5296;sb_link.o=4376;ch395f.o=4162;console_log.o=4132
|
||||
2026-11-11 256024 31760 2080 152368 287784 27.4 97024 74.0 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5332;sb_link.o=4376;ch395f.o=4162;console_log.o=4132
|
||||
2026-11-13 256200 31764 2080 152368 287964 27.5 97024 74.0 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5332;sb_link.o=4376;ch395f.o=4162;console_log.o=4132
|
||||
2026-11-13 256204 31764 2080 152368 287968 27.5 97024 74.0 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5332;sb_link.o=4376;ch395f.o=4162;console_log.o=4132
|
||||
|
||||
|
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"built_at": "2026-11-13T11:25:00+08:00",
|
||||
"fingerprint": "39f4f69a673f97c33cc59b301e723ec8f1e03686f4556ac6abb1a5a6cd438796",
|
||||
"built_at": "2026-11-13T16:20:25+08:00",
|
||||
"fingerprint": "3c4a1381e6e0306968e2a4ce03a2d25fd72f65a7262234e7e15703599301a54d",
|
||||
"fingerprint_files": 1479,
|
||||
"fingerprint_source": "git-index",
|
||||
"gated_regions": [
|
||||
"RW_IRAM1",
|
||||
"RW_CCM"
|
||||
],
|
||||
"git_head": "7c505b2457d977adf7750abbb841b0453fd6bfb9",
|
||||
"git_head": "40a2816a9971928d1ca6fa218921b86dae79bd63",
|
||||
"map": "MDK-ARM/STM32F407-Demo/STM32F407-Demo.map",
|
||||
"map_mtime": 1794540294,
|
||||
"map_mtime": 1794550493,
|
||||
"pct": {
|
||||
"ER_IROM1": 27.46,
|
||||
"RW_CCM": 87.89,
|
||||
@@ -19,7 +19,7 @@
|
||||
"regions": {
|
||||
"ER_IROM1": {
|
||||
"max": 1048576,
|
||||
"size": 287964
|
||||
"size": 287968
|
||||
},
|
||||
"RW_CCM": {
|
||||
"max": 65280,
|
||||
@@ -37,7 +37,7 @@
|
||||
"schema": 2,
|
||||
"scope_note": "\u540c\u7801\u51ed\u8bc1\uff1a\u6307\u7eb9\u8986\u76d6\u56fa\u4ef6\u4f53\u79ef\u76f8\u5173\u6e90\u7801\uff0c\u53e3\u5f84\u89c1\u672c\u811a\u672c docstring",
|
||||
"sizes": {
|
||||
"code": 256200,
|
||||
"code": 256204,
|
||||
"ro_data": 31764,
|
||||
"rw_data": 2080,
|
||||
"zi_data": 152368
|
||||
|
||||
Reference in New Issue
Block a user