diff options
-rw-r--r-- | include/socketengine.h | 1 | ||||
-rw-r--r-- | src/socketengine.cpp | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/include/socketengine.h b/include/socketengine.h index ecb8fa96e..caa4dc45b 100644 --- a/include/socketengine.h +++ b/include/socketengine.h @@ -67,6 +67,7 @@ const char X_READBIT = 0x80; class SocketEngine { int EngineHandle; /* Handle to the socket engine if needed */ + int CurrentSetSize; /* Current number of descriptors in the engine */ #ifdef USE_SELECT std::map<int,int> fds; /* List of file descriptors being monitored */ fd_set wfdset, rfdset; /* Readable and writeable sets for select() */ diff --git a/src/socketengine.cpp b/src/socketengine.cpp index 3e0b3814d..69838ff59 100644 --- a/src/socketengine.cpp +++ b/src/socketengine.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * Inspire is copyright (C) 2002-2005 ChatSpike-Dev. + * Inspire is copyright (C) 2002-2006 ChatSpike-Dev. * E-mail: * <brain@chatspike.net> * <Craig@chatspike.net> @@ -19,7 +19,6 @@ #include "inspircd.h" #ifdef USE_EPOLL #include <sys/epoll.h> -#define EP_DELAY 5 #endif #ifdef USE_KQUEUE #include <sys/types.h> @@ -67,6 +66,11 @@ bool SocketEngine::AddFd(int fd, bool readable, char type) { if ((fd < 0) || (fd > 65535)) return false; + if (GetRemainingFds() <= 1) + { + log(DEFAULT,"ERROR: System out of file descriptors!"); + return false; + } #ifdef USE_SELECT fds[fd] = fd; #endif |