Avoid filling the wake_sds when massive numbers of connections close at once.

This commit is contained in:
Howard Chu 2004-11-16 20:26:50 +00:00
parent 184fc4878a
commit 2415f5085d

View File

@ -74,14 +74,9 @@ Listener **slap_listeners = NULL;
static ber_socket_t wake_sds[2];
static int emfile;
#if defined(NO_THREADS) || defined(HAVE_GNU_PTH)
static int waking;
#define WAKE_LISTENER(w) \
((w && !waking) ? tcp_write( wake_sds[1], "0", 1 ), waking=1 : 0)
#else
#define WAKE_LISTENER(w) \
do { if (w) tcp_write( wake_sds[1], "0", 1 ); } while(0)
#endif
do { if (w && !waking) tcp_write( wake_sds[1], "0", 1 ); waking=w; } while(0)
volatile sig_atomic_t slapd_shutdown = 0, slapd_gentle_shutdown = 0;
volatile sig_atomic_t slapd_abrupt_shutdown = 0;
@ -1304,9 +1299,7 @@ slapd_daemon_task(
if( FD_ISSET( wake_sds[0], &readfds ) ) {
char c[BUFSIZ];
tcp_read( wake_sds[0], c, sizeof(c) );
#if defined(NO_THREADS) || defined(HAVE_GNU_PTH)
waking = 0;
#endif
ns--;
continue;
}