]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Module shutdown
authorOndřej Kuzník <okuznik@symas.com>
Wed, 7 Feb 2018 12:30:58 +0000 (12:30 +0000)
committerOndřej Kuzník <okuznik@symas.com>
Tue, 17 Nov 2020 17:58:14 +0000 (17:58 +0000)
servers/lloadd/daemon.c
servers/lloadd/main.c
servers/lloadd/module_init.c
servers/lloadd/proto-lload.h

index c20c5720bf4bdd03fa8e97cbfe97531fef8bc4c0..ed1a7b7a56c2203f0297336b14a3298af1449897 100644 (file)
@@ -84,6 +84,7 @@ struct event_base *listener_base = NULL;
 LloadListener **lload_listeners = NULL;
 static ldap_pvt_thread_t listener_tid, *daemon_tid;
 
+struct event_base *daemon_base = NULL;
 struct evdns_base *dnsbase;
 
 struct event *lload_timeout_event;
index b52daa3de9268cabd0a2d39cb2a48587152959e4..605a0f07b601fbc70fa73bfa6ba451a7fc4f0690 100644 (file)
@@ -376,8 +376,6 @@ main( int argc, char **argv )
     int slapd_pid_file_unlink = 0, slapd_args_file_unlink = 0;
     int firstopt = 1;
 
-    struct event_base *daemon_base = NULL;
-
     slap_sl_mem_init();
 
     serverName = lutil_progname( "lloadd", argc, argv );
index a39cc7288910bc1f659169acd861719e6fb8cf9c..7caa526a3b02dacbb6011092b26d53203ed8cbf0 100644 (file)
@@ -44,8 +44,9 @@ ldap_pvt_thread_t lloadd_main_thread;
 void *
 lload_start_daemon( void *arg )
 {
-    struct event_base *daemon_base = event_base_new();
     int rc = 0, i;
+
+    daemon_base = event_base_new();
     if ( !daemon_base ) {
         Debug( LDAP_DEBUG_ANY, "lload_start_daemon: "
                 "main event base allocation failed\n" );
@@ -102,13 +103,26 @@ lload_back_open( BackendInfo *bi )
             &lloadd_main_thread, 0, lload_start_daemon, NULL );
 }
 
+int
+lload_back_close( BackendInfo *bi )
+{
+    if ( slapMode & SLAP_TOOL_MODE ) {
+        return 0;
+    }
+
+    event_base_loopexit( daemon_base, NULL );
+    ldap_pvt_thread_join( lloadd_main_thread, (void *)NULL );
+
+    return 0;
+}
+
 int
 lload_back_initialize( BackendInfo *bi )
 {
     bi->bi_flags = SLAP_BFLAG_STANDALONE;
     bi->bi_open = lload_back_open;
     bi->bi_config = config_generic_wrapper;
-    bi->bi_close = 0;
+    bi->bi_close = lload_back_close;
     bi->bi_destroy = 0;
 
     bi->bi_db_init = 0;
index ed7cee0cbab80ee3b1b5afad67021a44ec3a5992..adfe96c145fd9d4060d13002c676e56d6e4d06fc 100644 (file)
@@ -104,6 +104,7 @@ LDAP_SLAPD_V (int) lload_daemon_mask;
 
 LDAP_SLAPD_F (void) lload_sig_shutdown( evutil_socket_t sig, short what, void *arg );
 
+LDAP_SLAPD_V (struct event_base *) daemon_base;
 LDAP_SLAPD_V (struct evdns_base *) dnsbase;
 LDAP_SLAPD_V (volatile sig_atomic_t) slapd_shutdown;
 LDAP_SLAPD_V (volatile sig_atomic_t) slapd_gentle_shutdown;