]> 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 17:59:22 +0000 (17:59 +0000)
servers/slapd/bconfig.c

index 49f65c678e33d83ab19a9b24d3f65e864f2999cd..3215372ff15f03e471778ee46455512a88534bd4 100644 (file)
@@ -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;