From: Ondřej Kuzník Date: Thu, 26 Aug 2021 14:26:13 +0000 (+0100) Subject: ITS#9538 Only queue csns for ops that don't get skipped X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=781a6c25a729cbdfb55071a37439e1c3ea395016;p=thirdparty%2Fopenldap.git ITS#9538 Only queue csns for ops that don't get skipped --- diff --git a/servers/slapd/overlays/accesslog.c b/servers/slapd/overlays/accesslog.c index 263dd43325..bff7e22e62 100644 --- a/servers/slapd/overlays/accesslog.c +++ b/servers/slapd/overlays/accesslog.c @@ -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 ))