diff --git a/CHANGES b/CHANGES
index 4c10f31edb4922f3784d8849abfd6ac5c607fc57..5df24b5cb49ee77cc06a8c71e1ef9fea00b58dd7 100644
--- a/CHANGES
+++ b/CHANGES
@@ -13,6 +13,7 @@ OpenLDAP 2.4.14 Engineering
 	Fixed slapd syncrepl rename handling (ITS#5809)
 	Fixed slapd syncrepl MMR when adding new server (ITS#5850)
 	Fixed slapd syncrepl replication with glued DB (ITS#5866)
+	Fixed slapd wake_sds close on Windows (ITS#5855)
 	Fixed slapd-bdb/hdb RFC4528 control support (ITS#5861)
 	Fixed slapd-ldap idassert-bind validity checking (ITS#5863)
 	Fixed slapd-ldif numerous bugs (ITS#5408)
diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c
index f5555d6a18e92c8e329f3eb1986e41aa8cb1e512..fea9d35e2324ee5f9c57fda37ecb9922e10d709a 100644
--- a/servers/slapd/daemon.c
+++ b/servers/slapd/daemon.c
@@ -1646,7 +1646,7 @@ slapd_daemon_destroy( void )
 {
 	connections_destroy();
 #ifdef HAVE_WINSOCK
-	if ( wake_sds[1] != INVALID_SOCKET )
+	if ( wake_sds[1] != INVALID_SOCKET && wake_sds[1] != wake_sds[0] )
 #endif /* HAVE_WINSOCK */
 		tcp_close( SLAP_FD2SOCK(wake_sds[1]) );
 #ifdef HAVE_WINSOCK