diff --git a/src/Nazara/Network/Linux/SocketPollerImpl.cpp b/src/Nazara/Network/Linux/SocketPollerImpl.cpp index 6e902a587..d3287a815 100644 --- a/src/Nazara/Network/Linux/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Linux/SocketPollerImpl.cpp @@ -111,9 +111,6 @@ namespace Nz if (m_events[i].events & (EPOLLOUT | EPOLLERR)) m_readyToWriteSockets.insert(m_events[i].data.fd); - - if (m_events[i].events & EPOLLERR) - NazaraWarning("Descriptor " + String::Number(m_events[i].data.fd) + " was returned by epoll with EPOLLERR status"); } else { diff --git a/src/Nazara/Network/Posix/SocketPollerImpl.cpp b/src/Nazara/Network/Posix/SocketPollerImpl.cpp index ed391c6f3..76e43ed4f 100644 --- a/src/Nazara/Network/Posix/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Posix/SocketPollerImpl.cpp @@ -90,12 +90,12 @@ namespace Nz int socketRemaining = activeSockets; for (PollSocket& entry : m_sockets) { - if (entry.revents != 0) + if (entry.revents & (POLLRDNORM | POLLWRNORM | POLLHUP | POLLERR)) { - if (entry.revents & POLLRDNORM) + if (entry.revents & (POLLRDNORM | POLLHUP | POLLERR)) m_readyToReadSockets.insert(entry.fd); - if (entry.revents & POLLWRNORM) + if (entry.revents & (POLLWRNORM | POLLERR)) m_readyToWriteSockets.insert(entry.fd); entry.revents = 0; @@ -103,6 +103,11 @@ namespace Nz if (--socketRemaining == 0) break; } + else + { + NazaraWarning("Socket " + String::Number(entry.fd) + " was returned by WSAPoll without POLLRDNORM nor POLLWRNORM events (events: 0x" + String::Number(entry.events, 16) + ')'); + activeSockets--; + } } } diff --git a/src/Nazara/Network/Win32/SocketPollerImpl.cpp b/src/Nazara/Network/Win32/SocketPollerImpl.cpp index 6789f35f4..40f176da2 100644 --- a/src/Nazara/Network/Win32/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Win32/SocketPollerImpl.cpp @@ -143,12 +143,12 @@ namespace Nz int socketRemaining = activeSockets; for (PollSocket& entry : m_sockets) { - if (entry.revents != 0) + if (entry.revents & (POLLRDNORM | POLLWRNORM | POLLHUP | POLLERR)) { - if (entry.revents & POLLRDNORM) + if (entry.revents & (POLLRDNORM | POLLHUP | POLLERR)) m_readyToReadSockets.insert(entry.fd); - if (entry.revents & POLLWRNORM) + if (entry.revents & (POLLWRNORM | POLLERR)) m_readyToWriteSockets.insert(entry.fd); entry.revents = 0; @@ -156,6 +156,11 @@ namespace Nz if (--socketRemaining == 0) break; } + else + { + NazaraWarning("Socket " + String::Number(entry.fd) + " was returned by WSAPoll without POLLRDNORM nor POLLWRNORM events (events: 0x" + String::Number(entry.events, 16) + ')'); + activeSockets--; + } } }