From e4e5ed71f8c5d6d01643ec4cb45786b2a0f22c6a Mon Sep 17 00:00:00 2001 From: Evgeny Date: Wed, 3 Jun 2026 19:20:06 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20etcp=5Frouter=5Fconsumer=5Fack=20?= =?UTF-8?q?=E2=80=94=20use=20router=5Fack=5Fdo=5Fsend=20instead=20of=20sch?= =?UTF-8?q?edule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit router_schedule_ack skips when rx_seq==last_sent_ack_seq (no-op), so the first consumer_ack call after setting consumer_ack=1 was silently ignored. Client never got ACK → send_q stuck at 256. router_ack_do_send always sends the ACK unconditionally. --- src/etcp_router.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/etcp_router.c b/src/etcp_router.c index 6c6c7c44..91e0c244 100644 --- a/src/etcp_router.c +++ b/src/etcp_router.c @@ -557,7 +557,7 @@ void etcp_router_consumer_ack(struct UTUN_INSTANCE* inst, uint64_t remote_node_i struct ETCP_ROUTER_CONN* rconn = etcp_router_conn_get(inst, remote_node_id, svc_id); if (!rconn) return; rconn->consumer_ack = 1; - router_schedule_ack(rconn); + router_ack_do_send(rconn); } // ====================================================================