From: Artem Boldariev Date: Mon, 27 Jun 2022 11:27:49 +0000 (+0300) Subject: TLS: bail out earlier when NM is stopping X-Git-Tag: v9.19.4~40^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc74b15e677d8810aea3b5abcc1b1f7eb9e7541a;p=thirdparty%2Fbind9.git TLS: bail out earlier when NM is stopping In some operations - most prominently when establishing connection - it might be beneficial to bail out earlier when the network manager is stopping. The issue is backported from loopmgr branch, where such a change is not only beneficial, but required. --- diff --git a/lib/isc/netmgr/tlsstream.c b/lib/isc/netmgr/tlsstream.c index adde8e069a2..7ba09d8f450 100644 --- a/lib/isc/netmgr/tlsstream.c +++ b/lib/isc/netmgr/tlsstream.c @@ -671,6 +671,9 @@ isc_nm_listentls(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, isc_nmsocket_t *tsock = NULL; REQUIRE(VALID_NM(mgr)); + if (atomic_load(&mgr->closing)) { + return (ISC_R_SHUTTINGDOWN); + } tlssock = isc_mem_get(mgr->mctx, sizeof(*tlssock)); @@ -829,6 +832,10 @@ isc__nm_tls_resumeread(isc_nmhandle_t *handle) { if (!atomic_compare_exchange_strong(&handle->sock->readpaused, &(bool){ false }, false)) { + if (inactive(handle->sock)) { + return; + } + async_tls_do_bio(handle->sock); } } @@ -926,6 +933,11 @@ isc_nm_tlsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, REQUIRE(VALID_NM(mgr)); + if (atomic_load(&mgr->closing)) { + cb(NULL, ISC_R_SHUTTINGDOWN, cbarg); + return; + } + nsock = isc_mem_get(mgr->mctx, sizeof(*nsock)); isc__nmsocket_init(nsock, mgr, isc_nm_tlssocket, local); nsock->result = ISC_R_UNSET;