Flush cancelled timers in teardown tests and clarify adapter close
This commit is contained in:
1 parent
1fb52d3f5b
commit
bd9f1bb0c9
2 files changed
+4
-2
No files matched your search
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in new issue
Block a user