]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
don't set SHUTTINGDOWN until after calling the request callbacks
authorEvan Hunt <each@isc.org>
Tue, 23 May 2023 21:33:28 +0000 (14:33 -0700)
committerEvan Hunt <each@isc.org>
Sat, 27 May 2023 00:41:37 +0000 (00:41 +0000)
if we set ISC_HTTPDMGR_SHUTTINGDOWN in the http manager before
calling the pending request callbacks, it can trigger an assertion.

lib/isc/httpd.c

index 2dd7061f82e99109dde780f0c7b593b615c58465..25605cd72a3281adf4527ebfd4c1b39dbead584a 100644 (file)
@@ -940,15 +940,17 @@ isc_httpdmgr_shutdown(isc_httpdmgr_t **httpdmgrp) {
        isc_nm_stoplistening(httpdmgr->sock);
 
        LOCK(&httpdmgr->lock);
-       httpdmgr->flags |= ISC_HTTPDMGR_SHUTTINGDOWN;
 
-       isc_httpd_t *httpd, *next;
+       isc_httpd_t *httpd = NULL, *next = NULL;
        ISC_LIST_FOREACH_SAFE (httpdmgr->running, httpd, link, next) {
                if (httpd->handle != NULL) {
                        httpd_request(httpd->handle, ISC_R_SUCCESS, NULL,
                                      httpd);
                }
        }
+
+       httpdmgr->flags |= ISC_HTTPDMGR_SHUTTINGDOWN;
+
        UNLOCK(&httpdmgr->lock);
 
        isc_nmsocket_close(&httpdmgr->sock);