diff options
Diffstat (limited to 'src/socketengine_epoll.cpp')
| -rw-r--r-- | src/socketengine_epoll.cpp | 18 |
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; } |
