]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9538 Only queue csns for ops that don't get skipped
authorOndřej Kuzník <ondra@mistotebe.net>
Thu, 26 Aug 2021 14:26:13 +0000 (15:26 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Sun, 5 Sep 2021 14:33:59 +0000 (14:33 +0000)
servers/slapd/overlays/accesslog.c

index 263dd433254c2c6f1fb39979b73045c350d4e816..bff7e22e6247b4b32904a9e1f884efc6ad3a5e7d 100644 (file)
@@ -1515,7 +1515,7 @@ accesslog_response(Operation *op, SlapReply *rs)
        Attribute *a, *last_attr;
        Modifications *m;
        struct berval *b, uuid = BER_BVNULL;
-       int i;
+       int i, success;
        int logop;
        slap_verbmasks *lo;
        Entry *e = NULL, *old = NULL, *e_uuid = NULL;
@@ -1547,6 +1547,16 @@ accesslog_response(Operation *op, SlapReply *rs)
        if ( op->o_dont_replicate )
                goto skip;
 
+       /*
+        * ITS#9051 Technically LDAP_REFERRAL and LDAP_SASL_BIND_IN_PROGRESS
+        * are not errors, but they aren't really success either
+        */
+       success = rs->sr_err == LDAP_SUCCESS ||
+               rs->sr_err == LDAP_COMPARE_TRUE ||
+               rs->sr_err == LDAP_COMPARE_FALSE;
+       if ( li->li_success && !success )
+               goto skip;
+
        if ( !( li->li_ops & lo->mask ) ) {
                log_base *lb;
 
@@ -1595,15 +1605,6 @@ accesslog_response(Operation *op, SlapReply *rs)
        BER_BVZERO( &li->li_uuid );
        ldap_pvt_thread_mutex_unlock( &li->li_op_rmutex );
 
-       /*
-        * ITS#9051 Technically LDAP_REFERRAL and LDAP_SASL_BIND_IN_PROGRESS
-        * are not errors, but they aren't really success either
-        */
-       if ( li->li_success && rs->sr_err != LDAP_SUCCESS &&
-                       rs->sr_err != LDAP_COMPARE_TRUE &&
-                       rs->sr_err != LDAP_COMPARE_FALSE )
-               goto done;
-
        e = accesslog_entry( op, rs, li, logop, &op2 );
 
        if ( !BER_BVISNULL( &op->o_req_ndn ))