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:
2026-11-13 16:20:30 +08:00
parent 40a2816a99
commit 8e1cc26c5d
5 changed files with 16 additions and 10 deletions
+6
View File
@@ -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) {