From 89aee50518198baa7fc63a2e6c46daf1ec7a85c9 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Sat, 28 Feb 2004 14:52:54 +0000 Subject: [PATCH] import ITS#2983 improvement from HEAD --- CHANGES | 1 + servers/slapd/back-monitor/operation.c | 36 +++++++++++++++++++------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/CHANGES b/CHANGES index 11dc454265..4265b588b8 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ OpenLDAP 2.2 Change Log OpenLDAP 2.2.7 Engineering + Added total operation count in back-monitor (ITS#2983) OpenLDAP 2.2.6 Release Fixed slapd SASL callback handling (ITS#2926) 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 ); -- 2.39.5