*/
Debug( LDAP_DEBUG_ANY,
"### %s meta_back_bind: more than one"
- " candidate is trying to bind...\n",
+ " candidate selected...\n",
op->o_log_prefix, 0, 0 );
}
lerr = meta_back_single_bind( &op2, rs, mc, i, massage );
if ( lerr != LDAP_SUCCESS ) {
- rs->sr_err = lerr;
+ rc = rs->sr_err = lerr;
candidates[ i ].sr_tag = META_NOT_CANDIDATE;
-
- rc = rs->sr_err;
break;
}
}
/* wait for all other ops to release the connection */
retry_lock:;
- ldap_pvt_thread_mutex_lock( &mi->mi_conn_mutex );
+ ldap_pvt_thread_mutex_lock( &mi->mi_conninfo.lai_mutex );
if ( mc->mc_refcnt > 1 ) {
- ldap_pvt_thread_mutex_unlock( &mi->mi_conn_mutex );
+ ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
ldap_pvt_thread_yield();
goto retry_lock;
}
assert( mc->mc_refcnt == 1 );
- mc = avl_delete( &mi->mi_conntree, (caddr_t)mc,
+ mc = avl_delete( &mi->mi_conninfo.lai_tree, (caddr_t)mc,
meta_back_conn_cmp );
assert( mc != NULL );
ber_bvreplace( &mc->mc_local_ndn, &op->o_req_ndn );
- lerr = avl_insert( &mi->mi_conntree, (caddr_t)mc,
+ lerr = avl_insert( &mi->mi_conninfo.lai_tree, (caddr_t)mc,
meta_back_conn_cmp, meta_back_conn_dup );
- ldap_pvt_thread_mutex_unlock( &mi->mi_conn_mutex );
+ ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
if ( lerr == -1 ) {
for ( i = 0; i < mi->mi_ntargets; ++i ) {
if ( mc->mc_conns[ i ].msc_ld != NULL ) {
struct timeval tv;
int rc;
int nretries = mt->mt_nretries;
+ char buf[ SLAP_TEXT_BUFLEN ];
LDAP_BACK_TV_SET( &tv );
tv.tv_usec = META_BIND_TIMEOUT;
switch ( ldap_result( msc->msc_ld, msgid, 0, &tv, &res ) ) {
case 0:
- Debug( LDAP_DEBUG_ANY,
- "%s meta_back_single_bind: "
+ snprintf( buf, sizeof( buf ),
"ldap_result=0 nretries=%d%s\n",
- op->o_log_prefix, nretries,
- rebinding ? " rebinding" : "" );
+ nretries, rebinding ? " rebinding" : "" );
+ Debug( LDAP_DEBUG_ANY,
+ "%s meta_back_single_bind[%d]: %s.\n",
+ op->o_log_prefix, candidate, buf );
if ( nretries != META_RETRY_NEVER ) {
ldap_pvt_thread_yield();
ldap_abandon_ext( msc->msc_ld, msgid, NULL, NULL );
}
+ snprintf( buf, sizeof( buf ),
+ "err=%d nretries=%d",
+ rs->sr_err, nretries );
Debug( LDAP_DEBUG_ANY,
- "### %s meta_back_single_bind: "
- "err=%d nretries=%d\n",
- op->o_log_prefix, rs->sr_err, nretries );
+ "### %s meta_back_single_bind[%d]: %s.\n",
+ op->o_log_prefix, candidate, buf );
rc = slap_map_api2result( rs );
if ( rs->sr_err == LDAP_UNAVAILABLE && nretries != META_RETRY_NEVER ) {
if ( rc == LDAP_SUCCESS ) {
LDAPMessage *res;
struct timeval tv;
+ char buf[ SLAP_TEXT_BUFLEN ];
LDAP_BACK_TV_SET( &tv );
tv.tv_usec = META_BIND_TIMEOUT;
switch ( ldap_result( msc->msc_ld, msgid, 0, &tv, &res ) ) {
case 0:
+ snprintf( buf, sizeof( buf ),
+ "ldap_result=0 nretries=%d%s",
+ nretries, rebinding ? " rebinding" : "" );
Debug( LDAP_DEBUG_ANY,
- "%s meta_back_single_dobind: "
- "ldap_result=0 nretries=%d%s\n",
- op->o_log_prefix, nretries,
- rebinding ? " rebinding" : "" );
+ "%s meta_back_single_dobind[%d]: %s.\n",
+ op->o_log_prefix, candidate, buf );
if ( nretries != META_RETRY_NEVER ) {
ldap_pvt_thread_yield();
ldap_abandon_ext( msc->msc_ld, msgid, NULL, NULL );
}
+ snprintf( buf, sizeof( buf ),
+ "err=%d nretries=%d",
+ rs->sr_err, nretries );
Debug( LDAP_DEBUG_ANY,
- "### %s meta_back_single_dobind: "
- "err=%d nretries=%d\n",
- op->o_log_prefix, rs->sr_err, nretries );
+ "### %s meta_back_single_dobind[%d]: %s.\n",
+ op->o_log_prefix, candidate, buf );
rc = slap_map_api2result( rs );
if ( rc == LDAP_UNAVAILABLE && nretries != META_RETRY_NEVER ) {
* to avoid circular loops; mc_mutex is set
* by the caller */
if ( dolock ) {
- ldap_pvt_thread_mutex_lock( &mi->mi_conn_mutex );
+ ldap_pvt_thread_mutex_lock( &mi->mi_conninfo.lai_mutex );
}
if ( mc->mc_refcnt == 1 ) {
/* mc here must be the regular mc,
* reset and ready for init */
rc = meta_back_init_one_conn( op, rs,
- mt, mc, msc,
+ mt, mc, candidate,
LDAP_BACK_CONN_ISPRIV( mc ),
- candidate == mc->mc_authz_target,
LDAP_BACK_DONTSEND );
} else {
}
if ( dolock ) {
- ldap_pvt_thread_mutex_unlock( &mi->mi_conn_mutex );
+ ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
}
if ( rc == LDAP_SUCCESS ) {