ITS#9538 Only queue csns for ops that don't get skipped

This commit is contained in:
Ondřej Kuzník 2021-08-26 15:26:13 +01:00 committed by Quanah Gibson-Mount
parent 8f8674fc86
commit 781a6c25a7

View 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 ))