]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socketengine_kqueue.cpp
Move some stuff around so the last penalty line doesnt get held erroneously until...
[user/henk/code/inspircd.git] / src / socketengine_kqueue.cpp
index e33f9f772e8e22212c1dd298cb31db0b218a96db..640172305c2360345ca661d9a3b6d26f6def1ccf 100644 (file)
@@ -61,15 +61,16 @@ bool KQueueEngine::AddFd(EventHandler* eh)
        if (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);
@@ -92,12 +93,12 @@ bool KQueueEngine::DelFd(EventHandler* eh, bool force)
 
        int j = kevent(EngineHandle, &ke, 1, 0, 0, NULL);
 
-       if ((j < 0) && (i < 0) && !force)
-               return false;
-
        CurrentSetSize--;
        ref[fd] = NULL;
 
+       if ((j < 0) && (i < 0) && !force)
+               return false;
+
        ServerInstance->Log(DEBUG,"Remove file descriptor: %d", fd);
        return true;
 }