mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-06 15:10:22 -05:00
Protect listener_tid from being killed after the listener has exited.
This commit is contained in:
parent
2813272234
commit
3041aafc2c
1 changed files with 8 additions and 1 deletions
|
|
@ -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 );
|
||||
|
|
|
|||
Loading…
Reference in a new issue