From: Ondřej Kuzník Date: Wed, 7 Feb 2018 12:30:58 +0000 (+0000) Subject: Module shutdown X-Git-Tag: OPENLDAP_REL_ENG_2_5_1ALPHA~18^2~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=22818e8583a7242bc052b8a5f348f025672b0a56;p=thirdparty%2Fopenldap.git Module shutdown --- diff --git a/servers/lloadd/daemon.c b/servers/lloadd/daemon.c index c20c5720bf..ed1a7b7a56 100644 --- a/servers/lloadd/daemon.c +++ b/servers/lloadd/daemon.c @@ -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; diff --git a/servers/lloadd/main.c b/servers/lloadd/main.c index b52daa3de9..605a0f07b6 100644 --- a/servers/lloadd/main.c +++ b/servers/lloadd/main.c @@ -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 ); diff --git a/servers/lloadd/module_init.c b/servers/lloadd/module_init.c index a39cc72889..7caa526a3b 100644 --- a/servers/lloadd/module_init.c +++ b/servers/lloadd/module_init.c @@ -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; diff --git a/servers/lloadd/proto-lload.h b/servers/lloadd/proto-lload.h index ed7cee0cba..adfe96c145 100644 --- a/servers/lloadd/proto-lload.h +++ b/servers/lloadd/proto-lload.h @@ -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;