[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
(ITS#6039) Windows sockets initialization and shutdown bugs in slapd
Full_Name: Test Seven
Version: 2.4.15
OS: Windows
URL:
Submission from: (NULL) (195.113.184.20)
I'm afraid slapd won't run on Windows without the first half of the following
patch. AppVerifier will choke on double tcp_close() without the second part.
--- daemon.c.orig 2009-02-13 03:35:40.000000000 +0100
+++ daemon.c 2009-03-27 09:24:22.515625000 +0100
@@ -537,6 +537,7 @@ static struct slap_daemon {
slap_daemon.sd_flags = (char *)(slapd_ws_sockets + dtblsize); \
slap_daemon.sd_rflags = slap_daemon.sd_flags + dtblsize; \
memset( slapd_ws_sockets, -1, dtblsize * sizeof(SOCKET) ); \
+ memset(slap_daemon.sd_flags, 0, dtblsize); /* Don't forget to initialize
this, used in slapd_add() called from slapd_daemon_task() */ \
slapd_ws_sockets[0] = wake_sds[0]; \
slapd_ws_sockets[1] = wake_sds[1]; \
wake_sds[0] = 0; \
@@ -1646,7 +1647,7 @@ slapd_daemon_destroy( void )
{
connections_destroy();
#ifdef HAVE_WINSOCK
- if ( wake_sds[1] != INVALID_SOCKET && wake_sds[1] != wake_sds[0] )
+ if ( wake_sds[1] != INVALID_SOCKET && SLAP_FD2SOCK(wake_sds[1]) !=
SLAP_FD2SOCK(wake_sds[0]) )
#endif /* HAVE_WINSOCK */
tcp_close( SLAP_FD2SOCK(wake_sds[1]) );
#ifdef HAVE_WINSOCK