return false;
}
if (ref[fd])
+ {
+ ServerInstance->Log(DEFAULT,"Slot %d already occupied",fd);
return false;
+ }
ref[fd] = eh;
struct epoll_event ev;
memset(&ev,0,sizeof(struct epoll_event));
- ref[fd]->Readable() ? ev.events = EPOLLIN : ev.events = EPOLLOUT;
+ eh->Readable() ? ev.events = EPOLLIN : ev.events = EPOLLOUT;
ev.data.fd = fd;
int i = epoll_ctl(EngineHandle, EPOLL_CTL_DEL, fd, &ev);
+
+ CurrentSetSize--;
+ ref[fd] = NULL;
+
if (i < 0)
{
- ServerInstance->Log(DEBUG,"epoll: List deletion failure!");
+ ServerInstance->Log(DEBUG,"epoll: List deletion failure: %s",strerror(errno));
return false;
}
- CurrentSetSize--;
- ref[fd] = NULL;
return true;
}