From: Howard Chu Date: Thu, 2 Dec 1999 03:45:54 +0000 (+0000) Subject: Fix WAKE_LISTENER hang in single-threaded server X-Git-Tag: UCDATA_2_4~152 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d1841b5c1f5a4a7addc1241ef6972e333e32a6df;p=openldap Fix WAKE_LISTENER hang in single-threaded server --- diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index b88f1e2b9a..823e6bd0b3 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -45,8 +45,14 @@ Listener **slap_listeners = NULL; static ber_socket_t wake_sds[2]; +#ifdef NO_THREADS +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 #ifdef HAVE_NT_SERVICE_MANAGER /* in nt_main.c */ @@ -594,6 +600,9 @@ slapd_daemon_task( if( FD_ISSET( wake_sds[0], &readfds ) ) { char c[BUFSIZ]; tcp_read( wake_sds[0], c, sizeof(c) ); +#ifdef NO_THREADS + waking = 0; +#endif continue; }