diff --git a/src/transport_layer/etcp.c b/src/transport_layer/etcp.c index d9dc915d..b6300ab3 100644 --- a/src/transport_layer/etcp.c +++ b/src/transport_layer/etcp.c @@ -668,6 +668,14 @@ void etcp_conn_ready(struct ETCP_CONN* conn) { DEBUG_INFO(DEBUG_CATEGORY_ETCP, "[%s] Connection ready", conn->log_name); etcp_conn_queue_set_ready(conn); + + // Реинит уже готового соединения (state!=0): etcp_conn_queue_set_ready не сработал + // (ранний выход по state!=0), поэтому reinit_pending остаётся висеть и блокирует приём — + // guard'ы в etcp_conn_input/etcp_output_try_assembly дропают все входящие пакеты. + if (conn->reinit_pending) { + conn->reinit_pending = 0; + etcp_cbk_fire(conn, ETCP_CBK_EVENT_REINIT); + } } // Move from pending to indexed connections, fire ready callbacks