* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * Inspire is copyright (C) 2002-2006 ChatSpike-Dev.
+ * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
* E-mail:
* <brain@chatspike.net>
* <Craig@chatspike.net>
bool SocketEngine::AddFd(int fd, bool readable, char type)
{
if ((fd < 0) || (fd > MAX_DESCRIPTORS))
+ {
+ log(DEFAULT,"ERROR: FD of %d added above max of %d",fd,MAX_DESCRIPTORS);
return false;
+ }
if (GetRemainingFds() <= 1)
{
log(DEFAULT,"ERROR: System out of file descriptors!");
log(DEBUG,"Add socket %d",fd);
#ifdef USE_EPOLL
struct epoll_event ev;
+ memset(&ev,0,sizeof(struct epoll_event));
log(DEBUG,"epoll: Add socket to events, ep=%d socket=%d",EngineHandle,fd);
- readable ? ev.events = EPOLLIN | EPOLLET : ev.events = EPOLLOUT | EPOLLET;
+ readable ? ev.events = EPOLLIN : ev.events = EPOLLOUT;
ev.data.fd = fd;
int i = epoll_ctl(EngineHandle, EPOLL_CTL_ADD, fd, &ev);
if (i < 0)
return true;
}
+bool SocketEngine::HasFd(int fd)
+{
+ if ((fd < 0) || (fd > MAX_DESCRIPTORS))
+ return false;
+ return (ref[fd] != 0);
+}
+
bool SocketEngine::DelFd(int fd)
{
log(DEBUG,"SocketEngine::DelFd(%d)",fd);
#endif
#ifdef USE_EPOLL
struct epoll_event ev;
- ref[fd] && X_READBIT ? ev.events = EPOLLIN | EPOLLET : ev.events = EPOLLOUT | EPOLLET;
+ memset(&ev,0,sizeof(struct epoll_event));
+ ref[fd] && X_READBIT ? ev.events = EPOLLIN : ev.events = EPOLLOUT;
ev.data.fd = fd;
int i = epoll_ctl(EngineHandle, EPOLL_CTL_DEL, fd, &ev);
if (i < 0)
}
tval.tv_sec = 0;
- tval.tv_usec = 100L;
+ tval.tv_usec = 50L;
sresult = select(FD_SETSIZE, &rfdset, &wfdset, NULL, &tval);
if (sresult > 0)
{
}
#endif
#ifdef USE_KQUEUE
- ts.tv_nsec = 10000L;
+ ts.tv_nsec = 5000L;
ts.tv_sec = 0;
int i = kevent(EngineHandle, NULL, 0, &ke_list[0], MAX_DESCRIPTORS, &ts);
for (int j = 0; j < i; j++)
fdlist[result++] = ke_list[j].ident;
#endif
#ifdef USE_EPOLL
- int i = epoll_wait(EngineHandle, events, MAX_DESCRIPTORS, 100);
+ int i = epoll_wait(EngineHandle, events, MAX_DESCRIPTORS, 50);
for (int j = 0; j < i; j++)
fdlist[result++] = events[j].data.fd;
#endif