Skip to content
Snippets Groups Projects
Commit 3041aafc authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

Protect listener_tid from being killed after the listener has exited.

parent 28132722
No related branches found
No related tags found
No related merge requests found
......@@ -25,6 +25,7 @@ int dtblsize;
static ldap_pvt_thread_t listener_tid;
static volatile sig_atomic_t slapd_shutdown = 0;
static volatile sig_atomic_t slapd_listener = 0;
struct slap_daemon {
ldap_pvt_thread_mutex_t sd_mutex;
......@@ -229,6 +230,8 @@ slapd_daemon_task(
int tcps = ((int *)ptr) [1];
free( ptr );
slapd_listener=1;
connections_init();
ldap_pvt_thread_mutex_init( &slap_daemon.sd_mutex );
......@@ -588,6 +591,7 @@ slapd_daemon_task(
}
ldap_pvt_thread_mutex_unlock( &active_threads_mutex );
slapd_listener = 0;
return NULL;
}
......@@ -625,7 +629,10 @@ void
slap_set_shutdown( int sig )
{
slapd_shutdown = sig;
ldap_pvt_thread_kill( listener_tid, LDAP_SIGUSR1 );
if(slapd_listener) {
ldap_pvt_thread_kill( listener_tid, LDAP_SIGUSR1 );
}
/* reinstall self */
(void) SIGNAL( sig, slap_set_shutdown );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment