From c6d3fbdfabefc7b12ccb0810083e4108d28b5182 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 28 Aug 2011 21:30:49 -0400 Subject: Added kqueue --- src/socketengines/socketengine_poll.cpp | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'src/socketengines/socketengine_poll.cpp') diff --git a/src/socketengines/socketengine_poll.cpp b/src/socketengines/socketengine_poll.cpp index ba111659a..07e150d84 100644 --- a/src/socketengines/socketengine_poll.cpp +++ b/src/socketengines/socketengine_poll.cpp @@ -142,13 +142,13 @@ void SocketEngine::Process() continue; Socket *s = it->second; - if (s->HasFlag(SF_DEAD)) - continue; - if (ev->revents & (POLLERR | POLLRDHUP)) { + socklen_t sz = sizeof(errno); + getsockopt(s->GetFD(), SOL_SOCKET, SO_ERROR, &errno, &sz); s->ProcessError(); s->SetFlag(SF_DEAD); + delete s; continue; } @@ -160,15 +160,6 @@ void SocketEngine::Process() if ((ev->revents & POLLOUT) && !s->ProcessWrite()) s->SetFlag(SF_DEAD); - } - - for (int i = 0; i < SocketCount; ++i) - { - pollfd *ev = &events[i]; - std::map::iterator it = Sockets.find(ev->fd); - if (it == Sockets.end()) - continue; - Socket *s = it->second; if (s->HasFlag(SF_DEAD)) delete s; -- cgit