From fce491e18c654c84f7d379beb202faa28f3b2b64 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 27 Dec 2010 00:41:04 -0500 Subject: Made socket engine stop processing once all sockets have been checked --- modules/socketengines/m_socketengine_select.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'modules/socketengines/m_socketengine_select.cpp') diff --git a/modules/socketengines/m_socketengine_select.cpp b/modules/socketengines/m_socketengine_select.cpp index b1c1c065f..3ea9eab27 100644 --- a/modules/socketengines/m_socketengine_select.cpp +++ b/modules/socketengines/m_socketengine_select.cpp @@ -73,10 +73,13 @@ class SocketEngineSelect : public SocketEngineBase } else if (sresult) { - for (std::map::const_iterator it = Sockets.begin(), it_end = Sockets.end(); it != it_end; ++it) + int processed = 0; + for (std::map::const_iterator it = Sockets.begin(), it_end = Sockets.end(); it != it_end && processed != sresult; ++it) { Socket *s = it->second; + if (FD_ISSET(s->GetFD(), &efdset) || FD_ISSET(s->GetFD(), &rfdset) || FD_ISSET(s->GetFD(), &wfdset)) + ++processed; if (s->HasFlag(SF_DEAD)) continue; if (FD_ISSET(s->GetFD(), &efdset)) -- cgit