summaryrefslogtreecommitdiff
path: root/src/socketengine_poll.cpp
diff options
context:
space:
mode:
authorGravatar w00t2008-08-24 21:53:26 +0000
committerGravatar w00t2008-08-24 21:53:26 +0000
commit462a06dbe5414a1c0d62efa50a42e28dcdfe0dd5 (patch)
treee4bcbfef1a1667e16bfeb2c0a26e3a81b74f7c9f /src/socketengine_poll.cpp
parentRevert 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.cpp30
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);
}
}
}