]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9042 Log modify values under STATS2
authorOndřej Kuzník <ondra@mistotebe.net>
Mon, 21 Oct 2024 13:58:23 +0000 (14:58 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 25 Oct 2024 20:02:19 +0000 (20:02 +0000)
servers/slapd/modify.c

index 5d19ee8d8e30d0a6b2a450090f879cb2ba1904f9..cdfddd50faaa0613c313811c85dee7bc5cd71908 100644 (file)
@@ -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;