]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix isc_nmsocket_set_tlsctx()
authorArtem Boldariev <artem@boldariev.com>
Fri, 14 Oct 2022 18:36:51 +0000 (21:36 +0300)
committerArtem Boldariev <artem@boldariev.com>
Fri, 14 Oct 2022 20:06:31 +0000 (23:06 +0300)
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

index d0b1d27f28e6de143d11a14470a91f3bba02b124..ac9ba9b69571fa666c967e91e699e1a2e2c2effa 100644 (file)
@@ -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);
        }
 }