X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fdaemon.c;h=509ed6a275947cdffbc928ea375b136afcaa1daf;hb=4a5d740e2ee4e700e76b2eac6f079e39f0134c94;hp=c88ab7ecc9891ab612ce824565b0b155a477e56a;hpb=fa2da63ca4d3f48793de5421f56c23c1c6d794ab;p=openldap diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index c88ab7ecc9..509ed6a275 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -89,7 +89,7 @@ slapd_daemon( if(dtblsize > FD_SETSIZE) { dtblsize = FD_SETSIZE; } -#endif /* !FD_SETSIZE*/ +#endif /* !FD_SETSIZE */ c = (Connection *) ch_calloc( 1, dtblsize * sizeof(Connection) ); @@ -149,16 +149,17 @@ slapd_daemon( } (void) SIGNAL( SIGPIPE, SIG_IGN ); -#ifdef SIGSTKFLT +#ifdef linux + /* + * LinuxThreads are implemented using SIGUSR1/USR2, + * so we'll use SIGSTKFLT and SIGUNUSED + */ (void) SIGNAL( SIGSTKFLT, (void *) do_nothing ); -#else - (void) SIGNAL( SIGUSR1, (void *) do_nothing ); -#endif -#ifdef SIGUNUSED (void) SIGNAL( SIGUNUSED, (void *) set_shutdown ); -#else +#else /* !linux */ + (void) SIGNAL( SIGUSR1, (void *) do_nothing ); (void) SIGNAL( SIGUSR2, (void *) set_shutdown ); -#endif +#endif /* !linux */ (void) SIGNAL( SIGTERM, (void *) set_shutdown ); (void) SIGNAL( SIGINT, (void *) set_shutdown ); (void) SIGNAL( SIGHUP, (void *) set_shutdown ); @@ -194,6 +195,9 @@ slapd_daemon( FD_ZERO( &readfds ); FD_SET( tcps, &readfds ); + zero.tv_sec = 0; + zero.tv_usec = 0; + pthread_mutex_lock( &active_threads_mutex ); Debug( LDAP_DEBUG_CONNS, "listening for connections on %d, activity on:", @@ -214,11 +218,9 @@ slapd_daemon( Debug( LDAP_DEBUG_CONNS, "\n", 0, 0, 0 ); pthread_mutex_unlock( &new_conn_mutex ); - zero.tv_sec = 0; - zero.tv_usec = 0; Debug( LDAP_DEBUG_CONNS, "before select active_threads %d\n", active_threads, 0, 0 ); -#ifdef PTHREAD_PREEMPTIVE +#if defined(PTHREAD_PREEMPTIVE) || defined(NO_THREADS) tvp = NULL; #else tvp = active_threads ? &zero : NULL; @@ -420,16 +422,17 @@ set_shutdown() { Debug( LDAP_DEBUG_ANY, "slapd got shutdown signal\n", 0, 0, 0 ); slapd_shutdown = 1; -#ifdef SIGSTKFLT +#ifdef linux + /* + * LinuxThreads are implemented using SIGUSR1/USR2, + * so we'll use SIGSTKFLT and SIGUNUSED + */ pthread_kill( listener_tid, SIGSTKFLT ); -#else - pthread_kill( listener_tid, SIGUSR1 ); -#endif -#ifdef SIGUNUSED (void) SIGNAL( SIGUNUSED, (void *) set_shutdown ); -#else +#else /* !linux */ + pthread_kill( listener_tid, SIGUSR1 ); (void) SIGNAL( SIGUSR2, (void *) set_shutdown ); -#endif +#endif /* !linux */ (void) SIGNAL( SIGTERM, (void *) set_shutdown ); (void) SIGNAL( SIGINT, (void *) set_shutdown ); (void) SIGNAL( SIGHUP, (void *) set_shutdown ); @@ -439,9 +442,13 @@ static void do_nothing() { Debug( LDAP_DEBUG_TRACE, "slapd got do_nothing signal\n", 0, 0, 0 ); -#ifdef SIGSTKFLT +#ifdef linux + /* + * LinuxThreads are implemented using SIGUSR1/USR2, + * so we'll use SIGSTKFLT and SIGUNUSED + */ (void) SIGNAL( SIGSTKFLT, (void *) do_nothing ); -#else +#else /* !linux */ (void) SIGNAL( SIGUSR1, (void *) do_nothing ); -#endif +#endif /* !linux */ }