]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Update backend progress tracking
authorOndřej Kuzník <ondra@mistotebe.net>
Wed, 12 Apr 2017 15:00:52 +0000 (16:00 +0100)
committerOndřej Kuzník <okuznik@symas.com>
Tue, 17 Nov 2020 17:55:46 +0000 (17:55 +0000)
servers/lloadd/backend.c
servers/lloadd/upstream.c

index 3a6d96234b5959125e5ce68c8920cf5a04d87a29..d0d9b85e2c56e339843818d09b05c536ebb19302 100644 (file)
@@ -31,7 +31,6 @@ static void
 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;
 
@@ -70,7 +69,11 @@ upstream_name_cb( int result, struct evutil_addrinfo *res, void *arg )
         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;
@@ -80,6 +83,7 @@ fail:
         evutil_closesocket( s );
     }
     b->b_opening--;
+    b->b_failed++;
     ldap_pvt_thread_mutex_unlock( &b->b_mutex );
     backend_retry( b );
 }
@@ -161,7 +165,6 @@ backend_connect( void *ctx, void *arg )
 #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;
 
@@ -190,7 +193,11 @@ backend_connect( void *ctx, void *arg )
             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;
@@ -210,6 +217,7 @@ backend_connect( void *ctx, void *arg )
 
 fail:
     b->b_opening--;
+    b->b_failed++;
     ldap_pvt_thread_mutex_unlock( &b->b_mutex );
     backend_retry( b );
     return (void *)-1;
index eb5291f3e291c7f7b1d87ea7106551458363444f..e5bfd657fb6d4b71860b93a1ff5dc76f5eb364a4 100644 (file)
@@ -748,8 +748,6 @@ upstream_init( ber_socket_t s, Backend *b )
 
     assert( b != NULL );
 
-    b->b_opening--;
-
     flags = (b->b_tls == LLOAD_LDAPS) ? CONN_IS_TLS : 0;
     c = connection_init( s, b->b_host, flags );
     c->c_private = b;