From f5527def7af782ad9fa399c62d53dbfd94b96b68 Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Wed, 29 Apr 2009 03:46:30 +0000
Subject: [PATCH] ITS#6039

---
 CHANGES                | 1 +
 servers/slapd/daemon.c | 4 +++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/CHANGES b/CHANGES
index 332fcaf07b..def7686cc4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,7 @@ OpenLDAP 2.4.17 Engineering
 	Fixed slapd global alloc handling (ITS#6054)
 	Fixed slapd moduleload with static backends and modules (ITS#6016)
 	Fixed slapd normalization of updated schema attributes (ITS#5540)
+	Fixed slapd sockets usage on windows (ITS#6039)
 	Build Environment
 		Added test056-monitor (ITS#5540)
 		Added test057-memberof-refint (ITS#5395)
diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c
index 5d4cbf645a..a7cd6d9837 100644
--- a/servers/slapd/daemon.c
+++ b/servers/slapd/daemon.c
@@ -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 ); \
 	slapd_ws_sockets[0] = wake_sds[0]; \
 	slapd_ws_sockets[1] = wake_sds[1]; \
 	wake_sds[0] = 0; \
@@ -1646,7 +1647,8 @@ 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
-- 
GitLab