aboutsummaryrefslogtreecommitdiffstats
path: root/src/socketengine_epoll.cpp
diff options
context:
space:
mode:
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;
}