diff --git a/src/xpdev/multisock.c b/src/xpdev/multisock.c
index 8e12aff896f7eedc0bbb271340306b4dd38dab16..6a138a54bf33b913f0713e11d13de1d0c1afa7ca 100644
--- a/src/xpdev/multisock.c
+++ b/src/xpdev/multisock.c
@@ -387,7 +387,7 @@ SOCKET DLLCALL xpms_accept(struct xpms_set *xpms_set, union xp_sockaddr * addr,
 			for(i=0; i<xpms_set->sock_count; i++) {
 				if(xpms_set->socks[i].sock == INVALID_SOCKET)
 					continue;
-				if ((fds[scnt].revents & POLLIN) == 0) {
+				if (fds[scnt].revents & (POLLERR | POLLNVAL)) {
 					closesocket(xpms_set->socks[i].sock);
 					xpms_set->lprintf(LOG_ERR, "%04d * Listening socket went bad", xpms_set->socks[i].sock);
 					xpms_set->socks[i].sock = INVALID_SOCKET;