From: Ondřej Kuzník Date: Tue, 25 Jul 2023 10:08:30 +0000 (+0100) Subject: ITS#10045 Make sure we only unpause when paused X-Git-Tag: OPENLDAP_REL_ENG_2_6_6~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c7a4cdd95c165bddef876bf04d8a802b5468c342;p=thirdparty%2Fopenldap.git ITS#10045 Make sure we only unpause when paused --- diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 49f65c678e..3215372ff1 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -5762,7 +5762,7 @@ config_back_add( Operation *op, SlapReply *rs ) dopause = 0; if ( op->o_abandon ) { rs->sr_err = SLAPD_ABANDON; - goto out; + goto unpause; } ldap_pvt_thread_rdwr_wlock( &cfb->cb_rwlock ); @@ -5833,10 +5833,11 @@ config_back_add( Operation *op, SlapReply *rs ) out2:; ldap_pvt_thread_rdwr_wunlock( &cfb->cb_rwlock ); -out:; +unpause:; if ( dopause ) slap_unpause_server(); +out:; { int repl = op->o_dont_replicate; if ( rs->sr_err == LDAP_COMPARE_TRUE ) { rs->sr_text = NULL; /* Set after config_add_internal */ @@ -6355,7 +6356,7 @@ config_back_modify( Operation *op, SlapReply *rs ) do_pause = 0; if ( op->o_abandon ) { rs->sr_err = SLAPD_ABANDON; - goto out; + goto unpause; } } ldap_pvt_thread_rdwr_wlock( &cfb->cb_rwlock ); @@ -6403,9 +6404,10 @@ config_back_modify( Operation *op, SlapReply *rs ) } ldap_pvt_thread_rdwr_wunlock( &cfb->cb_rwlock ); -out: +unpause:; if ( do_pause ) slap_unpause_server(); +out: if ( num_ctrls ) rs->sr_ctrls = ctrls; send_ldap_result( op, rs ); slap_graduate_commit_csn( op ); @@ -6576,7 +6578,7 @@ config_back_modrdn( Operation *op, SlapReply *rs ) dopause = 0; if ( op->o_abandon ) { rs->sr_err = SLAPD_ABANDON; - goto out; + goto unpause; } ldap_pvt_thread_rdwr_wlock( &cfb->cb_rwlock ); @@ -6661,9 +6663,10 @@ config_back_modrdn( Operation *op, SlapReply *rs ) ldap_pvt_thread_rdwr_wunlock( &cfb->cb_rwlock ); -out: +unpause: if ( dopause ) slap_unpause_server(); +out: if ( num_ctrls ) rs->sr_ctrls = ctrls; send_ldap_result( op, rs ); return rs->sr_err;