]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Set up connections in the worker threads
authorOndřej Kuzník <ondra@mistotebe.net>
Thu, 16 Mar 2017 12:14:22 +0000 (12:14 +0000)
committerOndřej Kuzník <okuznik@symas.com>
Tue, 17 Nov 2020 17:15:40 +0000 (17:15 +0000)
servers/lloadd/backend.c
servers/lloadd/daemon.c
servers/lloadd/proto-slap.h
servers/lloadd/upstream.c

index 9101c7b4a9ae67d91ccc565b334a99dab50fb08b..17d0ec51dfd051b60da8fa1442ba6aaf60656db9 100644 (file)
@@ -99,9 +99,10 @@ backend_select( Operation *op )
 }
 
 void *
-backend_connect( Backend *b )
+backend_connect( void *ctx, void *arg )
 {
     struct evutil_addrinfo hints = {};
+    Backend *b = arg;
 
 #ifdef LDAP_PF_LOCAL
     if ( b->b_proto == LDAP_PROTO_IPC ) {
index 9388ae8afe3fdc701117dfbf5ced7a4c36e54e8a..31382e594b56218e7f5bebfd9c60ae54fba00073 100644 (file)
@@ -1300,10 +1300,7 @@ slapd_daemon( struct event_base *daemon_base )
     }
 
     LDAP_STAILQ_FOREACH ( b, &backend, b_next ) {
-        rc = backend_connect( b );
-        if ( rc ) {
-            return rc;
-        }
+        ldap_pvt_thread_pool_submit( &connection_pool, backend_connect, b );
     }
 
     lloadd_inited = 1;
index 869dbe9b0b48074b24c6f6a03a3fb4ddbc1f5363..cb648ad087d8de6bfed69f6f0ce4d95a0d2c1c94 100644 (file)
@@ -40,7 +40,7 @@ struct config_reply_s; /* config.h */
  * backend.c
  */
 
-LDAP_SLAPD_F (int) backend_connect( Backend *b );
+LDAP_SLAPD_F (void *) backend_connect( void *ctx, void *arg );
 
 /*
  * ch_malloc.c
index 9702d5a523840eb29578cf1d6a4ff5ef7c23c7c7..5cc883fdd3da27f9d8c9bf9ba99f9e7836280d94 100644 (file)
@@ -102,6 +102,8 @@ upstream_destroy( Connection *c )
     b->b_conns = NULL;
     ldap_pvt_thread_mutex_unlock( &b->b_lock );
 
+    ldap_pvt_thread_pool_submit( &connection_pool, backend_connect, b );
+
     ldap_pvt_thread_mutex_lock( &c->c_mutex );
 
     event_del( c->c_read_event );