Flush cancelled timers in teardown tests and clarify adapter close

This commit is contained in:
evgeny committed 2026-10-23 21:54:49 +02:00
1 parent 1fb52d3f5b
commit bd9f1bb0c9
2 files changed
+4 -2

No files matched your search

+3 -2
View File
@@ -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);
+1
View File
@@ -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");