From bd9f1bb0c998e56c145e6f222d09c6ccfddf10ba Mon Sep 17 00:00:00 2001 From: evgeny Date: Fri, 23 Oct 2026 21:54:49 +0200 Subject: [PATCH] Flush cancelled timers in teardown tests and clarify adapter close --- src/transport_layer/stcp_link.h | 5 +++-- tests/test_etcp_stcp.c | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/transport_layer/stcp_link.h b/src/transport_layer/stcp_link.h index 2d6a722c..13d17e2d 100644 --- a/src/transport_layer/stcp_link.h +++ b/src/transport_layer/stcp_link.h @@ -52,10 +52,11 @@ struct stcp_server *stcp_server_list_find_by_sock(struct UTUN_INSTANCE *inst, co // ====== TCP client link ====== -struct stcp_link *stcp_link_connect(struct ETCP_LINK *etcp_link, - struct sockaddr_storage *remote_addr, uint16_t port); /* NULL — запуск не состоялся, callback не вызывается. Принятый connect уведомляет также об ошибке до READY. * Все уведомления после возврата connect; владелец устанавливает callbacks до следующего poll. */ +struct stcp_link *stcp_link_connect(struct ETCP_LINK *etcp_link, + struct sockaddr_storage *remote_addr, uint16_t port); +/* Сразу отменяет работу и отвязывает владельца; освобождает handle через call_soon, без on_close. */ void stcp_link_close(struct stcp_link *link); int stcp_link_send(struct stcp_link *link, const uint8_t *data, size_t len); int stcp_link_is_ready(struct stcp_link *link); diff --git a/tests/test_etcp_stcp.c b/tests/test_etcp_stcp.c index 6af520f1..e828a930 100644 --- a/tests/test_etcp_stcp.c +++ b/tests/test_etcp_stcp.c @@ -339,6 +339,7 @@ static void callback_close_case(int reality, int side, unsigned action, unsigned etcp_conn_ref_free(test.retained); for (int i = 0; i < 2; i++) if (endpoints[i].inst) stop_endpoint(i); uasync_drain_immediate(ua); + uasync_poll(ua, 0); /* Poll освобождает отменённые heap-таймеры; drain обрабатывает только call_soon. */ if (ua->timer_alloc_count != ua->timer_free_count || ua->socket_alloc_count != ua->socket_free_count) { debug_set_category_level(DEBUG_CATEGORY_SYS, DEBUG_LEVEL_INFO); uasync_print_resources(ua, "callback close imbalance");