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) {
|
||||
|
||||
Reference in New Issue
Block a user