summaryrefslogtreecommitdiff
path: root/src/socketengine_kqueue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/socketengine_kqueue.cpp')
-rw-r--r--src/socketengine_kqueue.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/socketengine_kqueue.cpp b/src/socketengine_kqueue.cpp
index 63e0610a7..7fcdae2b6 100644
--- a/src/socketengine_kqueue.cpp
+++ b/src/socketengine_kqueue.cpp
@@ -49,18 +49,17 @@ bool KQueueEngine::AddFd(EventHandler* eh)
return false;
if (ref[fd])
- DelFd(ref[fd]);
+ return false;
+
+ ref[fd] = eh;
struct kevent ke;
EV_SET(&ke, fd, eh->Readable() ? EVFILT_READ : EVFILT_WRITE, EV_ADD, 0, 0, NULL);
int i = kevent(EngineHandle, &ke, 1, 0, 0, NULL);
if (i == -1)
- {
return false;
- }
- ref[fd] = eh;
CurrentSetSize++;
ServerInstance->Log(DEBUG,"New file descriptor: %d", fd);
@@ -83,12 +82,12 @@ bool KQueueEngine::DelFd(EventHandler* eh, bool force)
int j = kevent(EngineHandle, &ke, 1, 0, 0, NULL);
- CurrentSetSize--;
- ref[fd] = NULL;
-
if ((j < 0) && (i < 0) && !force)
return false;
+ CurrentSetSize--;
+ ref[fd] = NULL;
+
ServerInstance->Log(DEBUG,"Remove file descriptor: %d", fd);
return true;
}