diff --git a/ChangeLog.md b/ChangeLog.md index 46704fd5d..0f68a9a8f 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -106,6 +106,7 @@ Nazara Engine: - Added ModelLibrary, ModelManager and ModelSaver - Added AbstractViewer::Project and AbstractViewer::Unproject methods - Added AbstractViewer::ProjectDepth method +- Fixed SocketPoller not be able to recover from some errors (like invalid sockets and such) Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Network/Posix/SocketPollerImpl.cpp b/src/Nazara/Network/Posix/SocketPollerImpl.cpp index 810427933..01cc9ffa9 100644 --- a/src/Nazara/Network/Posix/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Posix/SocketPollerImpl.cpp @@ -100,17 +100,17 @@ namespace Nz if (entry.revents & (POLLWRNORM | POLLERR)) m_readyToWriteSockets.insert(entry.fd); - - entry.revents = 0; - - 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.revents, 16) + ')'); activeSockets--; } + + entry.revents = 0; + + if (--socketRemaining == 0) + break; } } diff --git a/src/Nazara/Network/Win32/SocketPollerImpl.cpp b/src/Nazara/Network/Win32/SocketPollerImpl.cpp index 658e86c8e..5fa5ac5a2 100644 --- a/src/Nazara/Network/Win32/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Win32/SocketPollerImpl.cpp @@ -154,17 +154,17 @@ namespace Nz if (entry.revents & (POLLWRNORM | POLLERR)) m_readyToWriteSockets.insert(entry.fd); - - entry.revents = 0; - - 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.revents, 16) + ')'); activeSockets--; } + + entry.revents = 0; + + if (--socketRemaining == 0) + break; } } #else