diff options
| author | 2008-08-24 21:53:26 +0000 | |
|---|---|---|
| committer | 2008-08-24 21:53:26 +0000 | |
| commit | 462a06dbe5414a1c0d62efa50a42e28dcdfe0dd5 (patch) | |
| tree | e4bcbfef1a1667e16bfeb2c0a26e3a81b74f7c9f /src/socketengine_poll.cpp | |
| parent | Revert this file (diff) | |
Fixes to make this compile, also add it into configure if epoll/kqueue/ports are not used.
git-svn-id: http://svn.inspircd.org/repository/branches/1_1_stable@10247 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/socketengine_poll.cpp')
| -rw-r--r-- | src/socketengine_poll.cpp | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/socketengine_poll.cpp b/src/socketengine_poll.cpp index c1f8b0d6d..70892c19f 100644 --- a/src/socketengine_poll.cpp +++ b/src/socketengine_poll.cpp @@ -13,13 +13,13 @@ #include "inspircd.h" #include "exitcodes.h" -#include "socketengine_epoll.h" +#include "socketengine_poll.h" PollEngine::PollEngine(InspIRCd* Instance) : SocketEngine(Instance) { // Poll requires no special setup (which is nice). CurrentSetSize = 0; - memset(&events, 0, sizeof(struct pollfds * MAX_DESCRIPTORS)); +// memset(&events, 0, sizeof(struct pollfds) * MAX_DESCRIPTORS); } PollEngine::~PollEngine() @@ -90,43 +90,45 @@ int PollEngine::DispatchEvents() { int i = poll(events, MAX_DESCRIPTORS, 1000); int fd = 0; + socklen_t codesize = sizeof(int); + int errcode; if (i > 0) { for (fd = 0; fd < i; fd++) { - if (events[fd].event & POLLHUP) + if (events[fd].events & POLLHUP) { - if (ref[events[j].data.fd]) - ref[events[j].data.fd]->HandleEvent(EVENT_ERROR, 0); + if (ref[fd]) + ref[fd]->HandleEvent(EVENT_ERROR, 0); continue; } - if (events[fd].event & POLLERR) + if (events[fd].events & POLLERR) { // Get error number - if (getsockopt(events[j].data.fd, SOL_SOCKET, SO_ERROR, &errcode, &codesize) < 0) + if (getsockopt(fd, SOL_SOCKET, SO_ERROR, &errcode, &codesize) < 0) errcode = errno; - if (ref[events[j].data.fd]) - ref[events[j].data.fd]->HandleEvent(EVENT_ERROR, errcode); + if (ref[fd]) + ref[fd]->HandleEvent(EVENT_ERROR, errcode); continue; } - if (events[fd].event & POLLOUT) + if (events[fd].events & POLLOUT) { // Switch to wanting read again // event handlers have to request to write again if they need it - events[fd].event = POLLRDNORM; + events[fd].events = POLLRDNORM; if (ref[fd]) ref[fd]->HandleEvent(EVENT_WRITE); } - if (events[fd].event & POLLIN) + if (events[fd].events & POLLIN) { - if (ref[events[j].data.fd]) - ref[events[j].data.fd]->HandleEvent(EVENT_READ); + if (ref[fd]) + ref[fd]->HandleEvent(EVENT_READ); } } } |
