From 60800a7f358853f9850a604222f65b1b8d5bd310 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Mon, 1 Jun 2026 22:59:20 +0300 Subject: [PATCH] =?UTF-8?q?tcp=5Fproxy:=20=D0=BD=D0=B5=20=D1=81=D0=BB?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D0=B2=20lwip=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D1=8F=20TUN-=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=BE=D0=BD=D1=8B=20(tun=5Fclosed)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - handle_data: добавить pc->tun_closed в проверку сброса данных от exit - proxy_feed_from_transport: не писать в PCB после tun_closed - предотвращает ERR_RST (-14) при записи в TIME_WAIT PCB --- src/tcp_proxy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tcp_proxy.c b/src/tcp_proxy.c index 26b73483..84d96257 100644 --- a/src/tcp_proxy.c +++ b/src/tcp_proxy.c @@ -157,7 +157,7 @@ static int tcp_proxy_handle_non_tcp(struct tcp_proxy* p, uint8_t* buf, size_t le // Помощник: передача данных из очереди to_lwip в lwIP TCP // ==================================================================== static void proxy_feed_from_transport(struct proxy_conn *pc) { - if (!pc->to_lwip || !pc->pcb) return; + if (!pc->to_lwip || !pc->pcb || pc->tun_closed) return; int sent_any = 0; uint32_t q_pre = queue_entry_count(pc->to_lwip); while (1) { @@ -410,7 +410,7 @@ static void handle_data(struct tcp_proxy* p, struct ETCP_CONN* conn, uint32_t st if (conn) proxy_send_msg(p->inst, conn->peer_node_id, TCP_PROXY_SUBCMD_CLOSE, stream_id, NULL, 0); queue_dgram_free(entry); queue_entry_free(entry); return; } - if (pc->rem_closed || pc->error) { queue_dgram_free(entry); queue_entry_free(entry); return; } + if (pc->rem_closed || pc->error || pc->tun_closed) { queue_dgram_free(entry); queue_entry_free(entry); return; } size_t data_len = entry->len - TCP_PROXY_HDR_SIZE; DEBUG_INFO(DEBUG_CATEGORY_TRAFFIC, "PROXY DATA <- sid=%08x len=%zu", stream_id, data_len); if (data_len > 0) {