aboutsummaryrefslogtreecommitdiffstats
path: root/src/socketengine_epoll.cpp
diff options
context:
space:
mode:
authorGravatar brain2007-10-21 19:32:45 +0000
committerGravatar brain2007-10-21 19:32:45 +0000
commited63300b85aff38b49ff7bbfbcff22891a389026 (patch)
treeb437ea83e6a3cfcbfbcbf71ca3b55201b6f4a1d8 /src/socketengine_epoll.cpp
parentChange how the socket engines work when you addfd on an fd that already exists. (diff)
Roll back to 1.1.12 socket engine as a test
git-svn-id: http://svn.inspircd.org/repository/branches/1_1_stable@8274 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/socketengine_epoll.cpp')
-rw-r--r--src/socketengine_epoll.cpp18
1 files changed, 5 insertions, 13 deletions
diff --git a/src/socketengine_epoll.cpp b/src/socketengine_epoll.cpp
index 85efd6c8c..4ed68ca57 100644
--- a/src/socketengine_epoll.cpp
+++ b/src/socketengine_epoll.cpp
@@ -40,20 +40,15 @@ bool EPollEngine::AddFd(EventHandler* eh)
{
int fd = eh->GetFd();
if ((fd < 0) || (fd > MAX_DESCRIPTORS))
- {
- ServerInstance->Log(DEBUG,"Not adding fd %d as it is out of range",fd);
return false;
- }
if (GetRemainingFds() <= 1)
- {
- ServerInstance->Log(DEBUG,"Not adding fd %d as GetRemainingFds() <= 1",fd);
return false;
- }
if (ref[fd])
- DelFd(ref[fd]);
+ return false;
+ ref[fd] = eh;
struct epoll_event ev;
memset(&ev,0,sizeof(struct epoll_event));
eh->Readable() ? ev.events = EPOLLIN : ev.events = EPOLLOUT;
@@ -61,13 +56,10 @@ bool EPollEngine::AddFd(EventHandler* eh)
int i = epoll_ctl(EngineHandle, EPOLL_CTL_ADD, fd, &ev);
if (i < 0)
{
- ServerInstance->Log(DEBUG,"Not adding fd as epoll_ctl failed with error: %s", strerror(errno));
return false;
}
ServerInstance->Log(DEBUG,"New file descriptor: %d", fd);
-
- ref[fd] = eh;
CurrentSetSize++;
return true;
}
@@ -96,12 +88,12 @@ bool EPollEngine::DelFd(EventHandler* eh, bool force)
ev.data.fd = fd;
int i = epoll_ctl(EngineHandle, EPOLL_CTL_DEL, fd, &ev);
- CurrentSetSize--;
- ref[fd] = NULL;
-
if (i < 0 && !force)
return false;
+ CurrentSetSize--;
+ ref[fd] = NULL;
+
ServerInstance->Log(DEBUG,"Remove file descriptor: %d", fd);
return true;
}