From: Ondřej Kuzník Date: Mon, 21 Oct 2024 13:58:23 +0000 (+0100) Subject: ITS#9042 Log modify values under STATS2 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=4b8e60f843cffb323a33d3f04a3fac932959c6ae;p=thirdparty%2Fopenldap.git ITS#9042 Log modify values under STATS2 --- diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c index 5d19ee8d8e..cdfddd50fa 100644 --- a/servers/slapd/modify.c +++ b/servers/slapd/modify.c @@ -127,7 +127,44 @@ do_modify( } } - if (LogTest( LDAP_DEBUG_STATS ) ) { + if ( LogTest( LDAP_DEBUG_STATS2 ) ) { + Modifications *prevmod = NULL; + + for ( tmp = op->orm_modlist; tmp != NULL; tmp = tmp->sml_next ) { + unsigned int i; + char optype = '?'; + + switch (tmp->sml_op) { + case LDAP_MOD_ADD: + optype = '+'; + break; + case LDAP_MOD_DELETE: + optype = '-'; + break; + case LDAP_MOD_REPLACE: + optype = '='; + break; + case LDAP_MOD_INCREMENT: + optype = '#'; + break; + } + + if ( prevmod && tmp->sml_op == prevmod->sml_op && + ber_bvcmp( &prevmod->sml_type, &tmp->sml_type ) == 0 ) { + Debug( LDAP_DEBUG_STATS2, "%s MOD -\n", op->o_log_prefix ); + } + prevmod = tmp; + + if ( !tmp->sml_values ) { + Debug( LDAP_DEBUG_STATS2, "%s MOD %s%c=\n", + op->o_log_prefix, tmp->sml_type.bv_val, optype ); + } else for ( i=0; !BER_BVISNULL( &tmp->sml_values[i] ); i++ ) { + Debug( LDAP_DEBUG_STATS2, "%s MOD %s%c=\"%s\"\n", + op->o_log_prefix, tmp->sml_type.bv_val, optype, + tmp->sml_values[i].bv_val ); + } + } + } else if ( LogTest( LDAP_DEBUG_STATS ) ) { char abuf[BUFSIZ/2], *ptr = abuf; int len = 0;