X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-monitor%2Fconn.c;h=ae877020b70893cc627f6a68177bee27697af5c1;hb=0f966d2fdb392865cf615324519526c6ee1e4485;hp=c18f7bb475ba66e606147fa06ae73720c72920f6;hpb=ed5f670ac1592f80325021eab271d12bd18c0ff0;p=openldap diff --git a/servers/slapd/back-monitor/conn.c b/servers/slapd/back-monitor/conn.c index c18f7bb475..ae877020b7 100644 --- a/servers/slapd/back-monitor/conn.c +++ b/servers/slapd/back-monitor/conn.c @@ -38,6 +38,8 @@ #include "slap.h" #include "back-monitor.h" +#define CONN_CN_PREFIX "Connection" + int monitor_subsys_conn_init( BackendDB *be @@ -78,13 +80,7 @@ monitor_subsys_conn_init( */ snprintf( buf, sizeof( buf ), "dn: cn=Total,%s\n" - "objectClass: top\n" - "objectClass: LDAPsubEntry\n" -#ifdef SLAPD_MONITORSUBENTRY - "objectClass: monitorSubEntry\n" -#else /* !SLAPD_MONITORSUBENTRY */ - "objectClass: extensibleObject\n" -#endif /* !SLAPD_MONITORSUBENTRY */ + SLAPD_MONITOR_OBJECTCLASSES "cn: Total\n", monitor_subsys[SLAPD_MONITOR_CONN].mss_dn.bv_val ); @@ -142,13 +138,7 @@ monitor_subsys_conn_init( */ snprintf( buf, sizeof( buf ), "dn: cn=Current,%s\n" - "objectClass: top\n" - "objectClass: LDAPsubEntry\n" -#ifdef SLAPD_MONITORSUBENTRY - "objectClass: monitorSubEntry\n" -#else /* !SLAPD_MONITORSUBENTRY */ - "objectClass: extensibleObject\n" -#endif /* !SLAPD_MONITORSUBENTRY */ + SLAPD_MONITOR_OBJECTCLASSES "cn: Current\n", monitor_subsys[SLAPD_MONITOR_CONN].mss_dn.bv_val ); @@ -169,6 +159,11 @@ monitor_subsys_conn_init( return( -1 ); } + bv[1].bv_val = NULL; + bv[0].bv_val = "0"; + bv[0].bv_len = 1; + attr_merge( e, monitor_ad_desc, bv ); + mp = ( struct monitorentrypriv * )ch_calloc( sizeof( struct monitorentrypriv ), 1 ); e->e_private = ( void * )mp; mp->mp_next = e_tmp; @@ -269,15 +264,9 @@ conn_create( assert( ep != NULL ); snprintf( buf, sizeof( buf ), - "dn: cn=%ld,%s\n" - "objectClass: top\n" - "objectClass: LDAPsubEntry\n" -#ifdef SLAPD_MONITORSUBENTRY - "objectClass: monitorSubEntry\n" -#else /* !SLAPD_MONITORSUBENTRY */ - "objectClass: extensibleObject\n" -#endif /* !SLAPD_MONITORSUBENTRY */ - "cn: %ld\n", + "dn: cn=" CONN_CN_PREFIX " %ld,%s\n" + SLAPD_MONITOR_OBJECTCLASSES + "cn: " CONN_CN_PREFIX " %ld\n", c->c_connid, monitor_subsys[SLAPD_MONITOR_CONN].mss_dn.bv_val, c->c_connid ); e = str2entry( buf ); @@ -287,14 +276,14 @@ conn_create( LDAP_LOG(( "operation", LDAP_LEVEL_CRIT, "monitor_subsys_conn_create: " "unable to create entry " - "'cn=%ld,%s' entry\n", + "'cn=" CONN_CN_PREFIX " %ld,%s' entry\n", c->c_connid, monitor_subsys[SLAPD_MONITOR_CONN].mss_dn.bv_val )); #else Debug( LDAP_DEBUG_ANY, "monitor_subsys_conn_create: " "unable to create entry " - "'cn=%ld,%s' entry\n", + "'cn=" CONN_CN_PREFIX " %ld,%s' entry\n", c->c_connid, monitor_subsys[SLAPD_MONITOR_CONN].mss_dn.bv_val, 0 ); #endif @@ -333,12 +322,12 @@ conn_create( connection_state2str( c->c_conn_state ), c->c_sasl_bind_in_progress ? "S" : "", - c->c_cdn.bv_val ? c->c_cdn.bv_val : SLAPD_ANONYMOUS, + c->c_cdn.bv_len ? c->c_cdn.bv_val : SLAPD_ANONYMOUS, - c->c_listener_url, - c->c_peer_domain, - c->c_peer_name, - c->c_sock_name, + c->c_listener_url.bv_val, + c->c_peer_domain.bv_val, + c->c_peer_name.bv_val, + c->c_sock_name.bv_val, buf2, buf3 @@ -387,6 +376,16 @@ monitor_subsys_conn_create( c = connection_next( c, &connindex )) { if ( conn_create( c, &e ) || e == NULL ) { connection_done(c); + for ( ; e_tmp != NULL; ) { + mp = ( struct monitorentrypriv * )e_tmp->e_private; + e = mp->mp_next; + + ch_free( mp ); + e_tmp->e_private = NULL; + entry_free( e_tmp ); + + e_tmp = e; + } return( -1 ); } mp = ( struct monitorentrypriv * )e->e_private; @@ -404,14 +403,17 @@ monitor_subsys_conn_create( /* create exactly the required entry */ - if ( ldap_str2rdn( ndn->bv_val, &values, &text, LDAP_DN_FORMAT_LDAP ) ) { + if ( ldap_bv2rdn( ndn, &values, (char **)&text, + LDAP_DN_FORMAT_LDAP ) ) + { return( -1 ); } assert( values ); assert( values[ 0 ][ 0 ] ); - connid = atol( values[ 0 ][ 0 ]->la_value.bv_val ); + connid = atol( values[ 0 ][ 0 ]->la_value.bv_val + + sizeof( CONN_CN_PREFIX ) ); ldap_rdnfree( values ); @@ -423,6 +425,8 @@ monitor_subsys_conn_create( connection_done(c); return( -1 ); } + + break; } }