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-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2738a32de3a324fc56effd44c2fedaff1a359011;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 a6e00839a4..b221dac919 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -5760,7 +5760,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 ); @@ -5831,10 +5831,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 */ @@ -6353,7 +6354,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 ); @@ -6401,9 +6402,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 ); @@ -6703,9 +6705,10 @@ config_back_modrdn( Operation *op, SlapReply *rs ) out2:; 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;