From 5d1005ee903280077b70f563f36f4fb32899d940 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Fri, 6 Sep 2013 17:31:14 +0000
Subject: [PATCH] Not sure what I was smoking when I decided that closing a
 listening socket when an exceptional condition is signaled by selected.

---
 src/xpdev/multisock.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/src/xpdev/multisock.c b/src/xpdev/multisock.c
index 7bcde30651..5f0a3e84e0 100644
--- a/src/xpdev/multisock.c
+++ b/src/xpdev/multisock.c
@@ -206,7 +206,6 @@ SOCKET xpms_accept(struct xpms_set *xpms_set, union xp_sockaddr * addr,
 	socklen_t * addrlen, unsigned int timeout, void **cb_data)
 {
 	fd_set			read_fs;
-	fd_set			except_fs;
 	int				i;
 	struct timeval	tv;
 	struct timeval	*tvp;
@@ -217,7 +216,6 @@ SOCKET xpms_accept(struct xpms_set *xpms_set, union xp_sockaddr * addr,
 		if(xpms_set->socks[i].sock == INVALID_SOCKET)
 			continue;
 		FD_SET(xpms_set->socks[i].sock, &read_fs);
-		FD_SET(xpms_set->socks[i].sock, &except_fs);
 		if(xpms_set->socks[i].sock > max_sock)
 			max_sock=xpms_set->socks[i].sock+1;
 	}
@@ -229,7 +227,7 @@ SOCKET xpms_accept(struct xpms_set *xpms_set, union xp_sockaddr * addr,
 		tv.tv_usec=(timeout%1000)*1000;
 		tvp=&tv;
 	}
-	switch(select(max_sock, &read_fs, NULL, &except_fs, tvp)) {
+	switch(select(max_sock, &read_fs, NULL, NULL, tvp)) {
 		case 0:
 			return INVALID_SOCKET;
 		case -1:
@@ -243,10 +241,6 @@ SOCKET xpms_accept(struct xpms_set *xpms_set, union xp_sockaddr * addr,
 						*cb_data=xpms_set->socks[i].cb_data;
 					return accept(xpms_set->socks[i].sock, &addr->addr, addrlen);
 				}
-				if(FD_ISSET(xpms_set->socks[i].sock, &except_fs)) {
-					closesocket(xpms_set->socks[i].sock);
-					xpms_set->socks[i].sock = INVALID_SOCKET;
-				}
 			}
 	}
 
-- 
GitLab