upstream_name_cb( int result, struct evutil_addrinfo *res, void *arg )
{
Backend *b = arg;
- Connection *c;
ber_socket_t s = AC_SOCKET_INVALID;
int rc;
goto fail;
}
- c = upstream_init( s, b );
+ if ( !upstream_init( s, b ) ) {
+ goto fail;
+ }
+ b->b_opening--;
+ b->b_failed = 0;
ldap_pvt_thread_mutex_unlock( &b->b_mutex );
backend_retry( b );
return;
evutil_closesocket( s );
}
b->b_opening--;
+ b->b_failed++;
ldap_pvt_thread_mutex_unlock( &b->b_mutex );
backend_retry( b );
}
#ifdef LDAP_PF_LOCAL
if ( b->b_proto == LDAP_PROTO_IPC ) {
struct sockaddr_un addr;
- Connection *c;
ber_socket_t s = socket( PF_LOCAL, SOCK_STREAM, 0 );
int rc;
goto fail;
}
- c = upstream_init( s, b );
+ if ( !upstream_init( s, b ) ) {
+ goto fail;
+ }
+ b->b_opening--;
+ b->b_failed = 0;
ldap_pvt_thread_mutex_unlock( &b->b_mutex );
backend_retry( b );
return NULL;
fail:
b->b_opening--;
+ b->b_failed++;
ldap_pvt_thread_mutex_unlock( &b->b_mutex );
backend_retry( b );
return (void *)-1;