From c35f1babbf82909075a5f10f6416f069422bc553 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 5 Nov 2013 12:59:56 -0800 Subject: [PATCH] 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. --- servers/slapd/overlays/syncprov.c | 2 ++ 1 file changed, 2 insertions(+) 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 */ -- 2.39.5