]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#10045 Make sure we only unpause when paused
authorOndřej Kuzník <ondra@mistotebe.net>
Tue, 25 Jul 2023 10:08:30 +0000 (11:08 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 31 Jul 2023 16:46:12 +0000 (16:46 +0000)
servers/slapd/bconfig.c

index a6e00839a462532c919deef2a5dca6202d9025f6..b221dac919a884688417b2f0aa899279e8a210b3 100644 (file)
@@ -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;