]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socketengine_kqueue.cpp
Change around some dns stuff (dont use this yet)
[user/henk/code/inspircd.git] / src / socketengine_kqueue.cpp
index 008de44ca91174a45dff20aa651fc9c2070b46ad..43d27ba5abad0ff98d1065c0fe8de5ca34370a14 100644 (file)
@@ -44,6 +44,9 @@ KQueueEngine::~KQueueEngine()
 bool KQueueEngine::AddFd(EventHandler* eh)
 {
        int fd = eh->GetFd();
+
+       ServerInstance->Log(DEBUG,"KQueueEngine::AddFd(%d)",fd);
+
        if ((fd < 0) || (fd > MAX_DESCRIPTORS))
        {
                ServerInstance->Log(DEFAULT,"ERROR: FD of %d added above max of %d",fd,MAX_DESCRIPTORS);
@@ -56,7 +59,10 @@ bool KQueueEngine::AddFd(EventHandler* eh)
        }
 
        if (ref[fd])
+       {
+               ServerInstance->Log(DEFAULT,"ERROR: Slot already occupied");
                return false;
+       }
 
        ref[fd] = eh;
        ServerInstance->Log(DEBUG,"Add socket %d",fd);
@@ -64,6 +70,7 @@ bool KQueueEngine::AddFd(EventHandler* eh)
        struct kevent ke;
        ServerInstance->Log(DEBUG,"kqueue: Add socket to events, kq=%d socket=%d",EngineHandle,fd);
        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)
        {
@@ -86,15 +93,17 @@ bool KQueueEngine::DelFd(EventHandler* eh)
 
        struct kevent ke;
        EV_SET(&ke, fd, eh->Readable() ? EVFILT_READ : EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
+
        int i = kevent(EngineHandle, &ke, 1, 0, 0, NULL);
        if (i == -1)
        {
-               ServerInstance->Log(DEBUG,"kqueue: Failed to remove socket from queue!");
+               ServerInstance->Log(DEBUG,"kqueue: Failed to remove socket from queue: %s",strerror(errno));
                return false;
        }
 
        CurrentSetSize--;
        ref[fd] = NULL;
+
        return true;
 }