diff options
author | DukePyrolator <DukePyrolator@anope.org> | 2010-12-28 07:00:47 +0100 |
---|---|---|
committer | DukePyrolator <DukePyrolator@anope.org> | 2010-12-28 07:00:47 +0100 |
commit | fd7f542bd9fadb6b17618c8cda898b795be2c03f (patch) | |
tree | 5e78be7a79d7f0dddf8862b82124979f8ae0038e /modules/socketengines/m_socketengine_poll.cpp | |
parent | f638d1078ab5ab630ce9393fe87edd630abdf75a (diff) | |
parent | 5ead326454ccc369f8b3b4ef91971b45e7e01072 (diff) |
Merge branch '1.9' of ssh://anope.git.sourceforge.net/gitroot/anope/anope into 1.9
Diffstat (limited to 'modules/socketengines/m_socketengine_poll.cpp')
-rw-r--r-- | modules/socketengines/m_socketengine_poll.cpp | 8 |
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)) |