X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsocketengine.cpp;h=ec34bf74e6c1c1fa81fc0daf98a2678bc22fbc86;hb=59b1a8955142935b02af6446005ab47fc7c3fc8c;hp=69838ff59cfee93fc676be5d376ce542d405203b;hpb=dc12fcac8757b36b7da88d0a9ff25acc009d539c;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/socketengine.cpp b/src/socketengine.cpp index 69838ff59..ec34bf74e 100644 --- a/src/socketengine.cpp +++ b/src/socketengine.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * Inspire is copyright (C) 2002-2006 ChatSpike-Dev. + * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. * E-mail: * * @@ -29,13 +29,13 @@ #include #include "socketengine.h" -char ref[65535]; +char ref[MAX_DESCRIPTORS]; SocketEngine::SocketEngine() { log(DEBUG,"SocketEngine::SocketEngine()"); #ifdef USE_EPOLL - EngineHandle = epoll_create(65535); + EngineHandle = epoll_create(MAX_DESCRIPTORS); #endif #ifdef USE_KQUEUE EngineHandle = kqueue(); @@ -56,7 +56,7 @@ SocketEngine::~SocketEngine() char SocketEngine::GetType(int fd) { - if ((fd < 0) || (fd > 65535)) + if ((fd < 0) || (fd > MAX_DESCRIPTORS)) return X_EMPTY_SLOT; /* Mask off the top bit used for 'read/write' state */ return (ref[fd] & ~0x80); @@ -64,8 +64,11 @@ char SocketEngine::GetType(int fd) bool SocketEngine::AddFd(int fd, bool readable, char type) { - if ((fd < 0) || (fd > 65535)) + 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!"); @@ -84,7 +87,7 @@ bool SocketEngine::AddFd(int fd, bool readable, char type) #ifdef USE_EPOLL struct epoll_event ev; 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) @@ -112,7 +115,7 @@ bool SocketEngine::DelFd(int fd) { log(DEBUG,"SocketEngine::DelFd(%d)",fd); - if ((fd < 0) || (fd > 65535)) + if ((fd < 0) || (fd > MAX_DESCRIPTORS)) return false; #ifdef USE_SELECT @@ -135,7 +138,7 @@ bool SocketEngine::DelFd(int fd) #endif #ifdef USE_EPOLL struct epoll_event ev; - ref[fd] && X_READBIT ? ev.events = EPOLLIN | EPOLLET : ev.events = EPOLLOUT | EPOLLET; + 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) @@ -210,12 +213,12 @@ int SocketEngine::Wait(int* fdlist) #ifdef USE_KQUEUE ts.tv_nsec = 10000L; ts.tv_sec = 0; - int i = kevent(EngineHandle, NULL, 0, &ke_list[0], 65535, &ts); + 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, 65535, 100); + int i = epoll_wait(EngineHandle, events, MAX_DESCRIPTORS, 100); for (int j = 0; j < i; j++) fdlist[result++] = events[j].data.fd; #endif