From: Ondřej Kuzník Date: Wed, 9 May 2018 15:07:11 +0000 (+0100) Subject: ITS#8850 Wait until backends are closed before freeing connection_pool X-Git-Tag: OPENLDAP_REL_ENG_2_5_0ALPHA~67^2~202 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7127d5db11013ff53940f046acbe90e04623ec0c;p=thirdparty%2Fopenldap.git ITS#8850 Wait until backends are closed before freeing connection_pool --- diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index 42bb931ca6..2bdb60aa1d 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -3073,7 +3073,7 @@ loop: "slapd shutdown: waiting for %d operations/tasks to finish\n", t, 0, 0 ); } - ldap_pvt_thread_pool_destroy( &connection_pool, 1 ); + ldap_pvt_thread_pool_close( &connection_pool, 1 ); return NULL; } diff --git a/servers/slapd/init.c b/servers/slapd/init.c index d87f4c4211..eee96eddf3 100644 --- a/servers/slapd/init.c +++ b/servers/slapd/init.c @@ -229,6 +229,9 @@ int slap_shutdown( Backend *be ) "%s shutdown: initiated\n", slap_name, 0, 0 ); + /* Make sure the pool stops now even if we did not start up fully */ + ldap_pvt_thread_pool_close( &connection_pool, 1 ); + /* let backends do whatever cleanup they need to do */ return backend_shutdown( be ); } @@ -245,6 +248,8 @@ int slap_destroy(void) ber_bvarray_free( default_referral ); } + ldap_pvt_thread_pool_free( &connection_pool ); + /* clear out any thread-keys for the main thread */ ldap_pvt_thread_pool_context_reset( ldap_pvt_thread_pool_context());