From: Pierangelo Masarati Date: Sat, 28 Feb 2004 14:36:19 +0000 (+0000) Subject: should fix ITS#2983 - total count of ops initiated/completed in root of operations... X-Git-Tag: OPENLDAP_REL_ENG_2_2_BP~393 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=fa2cb48f3a8d128b72a126430155a38d2607b21d;p=openldap should fix ITS#2983 - total count of ops initiated/completed in root of operations branch --- diff --git a/servers/slapd/back-monitor/operation.c b/servers/slapd/back-monitor/operation.c index d4ea6f9c35..0c23b779eb 100644 --- a/servers/slapd/back-monitor/operation.c +++ b/servers/slapd/back-monitor/operation.c @@ -54,6 +54,7 @@ monitor_subsys_ops_init( struct monitorentrypriv *mp; char buf[ BACKMONITOR_BUFSIZE ]; int i; + struct berval bv_zero = BER_BVC("0"); assert( be != NULL ); @@ -76,6 +77,9 @@ monitor_subsys_ops_init( return( -1 ); } + attr_merge_one( e_op, mi->mi_ad_monitorOpInitiated, &bv_zero, NULL ); + attr_merge_one( e_op, mi->mi_ad_monitorOpCompleted, &bv_zero, NULL ); + e_tmp = NULL; for ( i = SLAP_OP_LAST; i-- > 0; ) { @@ -163,7 +167,7 @@ monitor_subsys_ops_update( ) { struct monitorinfo *mi = (struct monitorinfo *)op->o_bd->be_private; - long nInitiated = -1, nCompleted = -1; + long nInitiated = 0, nCompleted = 0; char *rdnvalue; int i; Attribute *a; @@ -174,17 +178,29 @@ monitor_subsys_ops_update( rdnvalue = e->e_dn + ( sizeof( "cn=" ) - 1 ); - for (i = 0; i < SLAP_OP_LAST; i++ ) { - if ( strncmp( rdnvalue, bv_op[ i ].bv_val, - bv_op[ i ].bv_len ) == 0 ) { - nInitiated = num_ops_initiated_[ i ]; - nCompleted = num_ops_completed_[ i ]; - break; + if ( strncmp( rdnvalue, SLAPD_MONITOR_OPS_NAME, + sizeof( SLAPD_MONITOR_OPS_NAME ) - 1 ) == 0 ) + { + for ( i = 0; i < SLAP_OP_LAST; i++ ) { + nInitiated += num_ops_initiated_[ i ]; + nCompleted += num_ops_completed_[ i ]; + } + + } else { + for ( i = 0; i < SLAP_OP_LAST; i++ ) { + if ( strncmp( rdnvalue, bv_op[ i ].bv_val, + bv_op[ i ].bv_len ) == 0 ) + { + nInitiated = num_ops_initiated_[ i ]; + nCompleted = num_ops_completed_[ i ]; + break; + } } - } - if ( i == SLAP_OP_LAST ) { - return( 0 ); + if ( i == SLAP_OP_LAST ) { + /* not found ... */ + return( 0 ); + } } a = attr_find( e->e_attrs, mi->mi_ad_monitorOpInitiated );