From: Howard Chu Date: Tue, 5 Nov 2013 20:59:56 +0000 (-0800) Subject: Fix CONFIG_DELETE crash X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=6711876a3552b0de1cb8b67e8d36c89f93ca2b1c;p=openldap Fix CONFIG_DELETE crash Closing a connection can abandon its ops without going thru the threadpool, so make sure to lock the si_ops_mutex before walking the list. --- diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index c18e16483d..8a16cd47e3 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -3170,6 +3170,7 @@ syncprov_db_close( #ifdef SLAP_CONFIG_DELETE if ( !slapd_shutdown ) { + ldap_pvt_thread_mutex_lock( &si->si_ops_mutex ); for ( so=si->si_ops, sonext=so; so; so=sonext ) { SlapReply rs = {REP_RESULT}; rs.sr_err = LDAP_UNAVAILABLE; @@ -3178,6 +3179,7 @@ syncprov_db_close( syncprov_drop_psearch( so, 0); } si->si_ops=NULL; + ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex ); } overlay_unregister_control( be, LDAP_CONTROL_SYNC ); #endif /* SLAP_CONFIG_DELETE */