- snprintf( buf, sizeof( buf ), "%d",
- ldap_pvt_thread_pool_backload( &SLAPD_GLOBAL(connection_pool) ) );
- len = strlen( buf );
- if ( len > a->a_vals[ 0 ].bv_len ) {
- a->a_vals[ 0 ].bv_val = ber_memrealloc( a->a_vals[ 0 ].bv_val, len + 1 );
+ switch ( which ) {
+ case 1:
+ snprintf( buf, sizeof( buf ), "%d",
+ ldap_pvt_thread_pool_backload( &connection_pool ) );
+ len = strlen( buf );
+ if ( len > a->a_vals[ 0 ].bv_len ) {
+ a->a_vals[ 0 ].bv_val = ber_memrealloc( a->a_vals[ 0 ].bv_val, len + 1 );
+ }
+ a->a_vals[ 0 ].bv_len = len;
+ AC_MEMCPY( a->a_vals[ 0 ].bv_val, buf, len + 1 );
+ break;
+
+ case 2:
+ for ( i = 0; !BER_BVISNULL( &a->a_vals[ i ] ); i++ ) {
+ ch_free( a->a_vals[i].bv_val );
+ BER_BVZERO( &a->a_vals[ i ] );
+ }
+ bv.bv_val = buf;
+ ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex );
+ LDAP_STAILQ_FOREACH( re, &slapd_rq.run_list, rnext ) {
+ bv.bv_len = snprintf( buf, sizeof( buf ), "%s(%s)",
+ re->tname, re->tspec );
+ value_add_one( &a->a_vals, &bv );
+ }
+ ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex );
+
+ /* don't leave 'round attributes with no values */
+ if ( BER_BVISNULL( &a->a_vals[ 0 ] ) ) {
+ BER_BVSTR( &bv, "()" );
+ value_add_one( &a->a_vals, &bv );
+ }
+ break;