From: Howard Chu Date: Sun, 24 Dec 2006 19:05:13 +0000 (+0000) Subject: Fix ITS#4790, prev patch was corrupted X-Git-Tag: OPENLDAP_REL_ENG_2_3_32~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=135b7c67ff9e6a0ee310975cc3cc8b64f7908e8d;p=thirdparty%2Fopenldap.git Fix ITS#4790, prev patch was corrupted --- diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index fc0ebed127..de06ffb7c9 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -196,21 +196,22 @@ int connections_shutdown(void) ber_socket_t i; for ( i = 0; i < dtblsize; i++ ) { - ldap_pvt_thread_mutex_lock( &connections[i].c_mutex ); - if( connections[i].c_struct_state == SLAP_C_USED ) { - - /* give persistent clients a chance to cleanup */ - if( connections[i].c_conn_state == SLAP_C_CLIENT ) { - ldap_pvt_thread_pool_submit( &connection_pool, - connections[i].c_clientfunc, connections[i].c_clientarg ); - continue; - } else { - /* c_mutex is locked */ - connection_closing( &connections[i], "slapd shutdown" ); - connection_close( &connections[i] ); + if( connections[i].c_struct_state != SLAP_C_UNINITIALIZED ) { + ldap_pvt_thread_mutex_lock( &connections[i].c_mutex ); + if( connections[i].c_struct_state == SLAP_C_USED ) { + + /* give persistent clients a chance to cleanup */ + if( connections[i].c_conn_state == SLAP_C_CLIENT ) { + ldap_pvt_thread_pool_submit( &connection_pool, + connections[i].c_clientfunc, connections[i].c_clientarg ); + } else { + /* c_mutex is locked */ + connection_closing( &connections[i], "slapd shutdown" ); + connection_close( &connections[i] ); + } } + ldap_pvt_thread_mutex_unlock( &connections[i].c_mutex ); } - ldap_pvt_thread_mutex_unlock( &connections[i].c_mutex ); } return 0;