summaryrefslogtreecommitdiff
path: root/modules/socketengines/m_socketengine_poll.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/socketengines/m_socketengine_poll.cpp')
-rw-r--r--modules/socketengines/m_socketengine_poll.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/modules/socketengines/m_socketengine_poll.cpp b/modules/socketengines/m_socketengine_poll.cpp
index 044a79c4f..5b44f8674 100644
--- a/modules/socketengines/m_socketengine_poll.cpp
+++ b/modules/socketengines/m_socketengine_poll.cpp
@@ -72,7 +72,7 @@ class SocketEnginePoll : public SocketEngineBase
return;
}
- if (pos->second != SocketCount)
+ if (pos->second != SocketCount - 1)
{
pollfd *ev = &this->events[pos->second],
*last_ev = &this->events[SocketCount - 1];
@@ -137,9 +137,13 @@ class SocketEnginePoll : public SocketEngineBase
return;
}
- for (int i = 0; i < total; ++i)
+ for (int i = 0, processed = 0; i < SocketCount && processed != total; ++i)
{
pollfd *ev = &this->events[i];
+
+ if (ev->revents != 0)
+ ++processed;
+
Socket *s = Sockets[ev->fd];
if (s->HasFlag(SF_DEAD))