From e4b07303877cd753d00a21c91eb4443ef293ddb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 18 Mar 2021 21:37:12 +0100 Subject: [PATCH] Call the isc__nm_failed_connect_cb() early when shutting down When shutting down, calling the isc__nm_failed_connect_cb() was delayed until the connect callback would be called. It turned out that the connect callback might not get called at all when the socket is being shut down. Call the failed_connect_cb() directly in the tlsdns_shutdown() instead of waiting for the connect callback to call it. --- lib/isc/netmgr/tlsdns.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/isc/netmgr/tlsdns.c b/lib/isc/netmgr/tlsdns.c index 961dceaadd..330a2ae324 100644 --- a/lib/isc/netmgr/tlsdns.c +++ b/lib/isc/netmgr/tlsdns.c @@ -760,7 +760,7 @@ isc__nm_tlsdns_failed_read_cb(isc_nmsocket_t *sock, isc_result_t result) { isc__nmsocket_timer_stop(sock); isc__nm_stop_reading(sock); - if (sock->tls.pending_req) { + if (sock->tls.pending_req != NULL) { isc__nm_uvreq_t *req = sock->tls.pending_req; sock->tls.pending_req = NULL; isc__nm_failed_connect_cb(sock, req, ISC_R_CANCELED); @@ -1835,16 +1835,16 @@ isc__nm_tlsdns_shutdown(isc_nmsocket_t *sock) { return; } - if (atomic_load(&sock->connecting) || sock->accepting) { - return; - } - - if (sock->tls.pending_req) { + if (sock->tls.pending_req != NULL) { isc__nm_uvreq_t *req = sock->tls.pending_req; sock->tls.pending_req = NULL; isc__nm_failed_connect_cb(sock, req, ISC_R_CANCELED); } + if (atomic_load(&sock->connecting) || sock->accepting) { + return; + } + if (sock->statichandle) { isc__nm_failed_read_cb(sock, ISC_R_CANCELED); return;