From d62eb206f7251129c65407ee038a3a4fd5071f29 Mon Sep 17 00:00:00 2001 From: Artem Boldariev Date: Fri, 14 Oct 2022 21:36:51 +0300 Subject: [PATCH] Fix isc_nmsocket_set_tlsctx() During loop manager refactoring isc_nmsocket_set_tlsctx() was not properly adapted. The function is expected to broadcast the new TLS context for every worker, but this behaviour was accidentally broken. --- lib/isc/netmgr/netmgr.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index d0b1d27f28..ac9ba9b695 100644 --- a/lib/isc/netmgr/netmgr.c +++ b/lib/isc/netmgr/netmgr.c @@ -2650,14 +2650,16 @@ isc__nm_async_settlsctx(isc__networker_t *worker, isc__netievent_t *ev0) { static void set_tlsctx_workers(isc_nmsocket_t *listener, isc_tlsctx_t *tlsctx) { - uint32_t nloops = isc_loopmgr_nloops(listener->worker->netmgr->loopmgr); + const size_t nworkers = + (size_t)isc_loopmgr_nloops(listener->worker->netmgr->loopmgr); /* Update the TLS context reference for every worker thread. */ - for (size_t i = 0; i < nloops; i++) { + for (size_t i = 0; i < nworkers; i++) { + isc__networker_t *worker = + &listener->worker->netmgr->workers[i]; isc__netievent__tlsctx_t *ievent = - isc__nm_get_netievent_settlsctx(listener->worker, - listener, tlsctx); - isc__nm_enqueue_ievent(listener->worker, - (isc__netievent_t *)ievent); + isc__nm_get_netievent_settlsctx(worker, listener, + tlsctx); + isc__nm_enqueue_ievent(worker, (isc__netievent_t *)ievent); } }