Browse Source

fix: etcp_router_consumer_ack — use router_ack_do_send instead of schedule

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.
etcp-inflight-fix
Evgeny 4 months ago
parent
commit
e4e5ed71f8
  1. 2
      src/etcp_router.c

2
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); struct ETCP_ROUTER_CONN* rconn = etcp_router_conn_get(inst, remote_node_id, svc_id);
if (!rconn) return; if (!rconn) return;
rconn->consumer_ack = 1; rconn->consumer_ack = 1;
router_schedule_ack(rconn); router_ack_do_send(rconn);
} }
// ==================================================================== // ====================================================================

Loading…
Cancel
Save