summaryrefslogtreecommitdiff
path: root/src/modules.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules.cpp')
-rw-r--r--src/modules.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/modules.cpp b/src/modules.cpp
index ffc6e0c8d..b53dd4f7f 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -22,11 +22,17 @@ using namespace std;
#include "inspircd_config.h"
#include <unistd.h>
#include <sys/errno.h>
+
#ifdef USE_KQUEUE
#include <sys/types.h>
#include <sys/event.h>
#include <sys/time.h>
#endif
+
+#ifdef USE_EPOLL
+#include <sys/epoll.h>
+#endif
+
#include <time.h>
#include <string>
#ifdef GCC3
@@ -58,6 +64,10 @@ using namespace std;
extern int kq;
#endif
+#ifdef USE_EPOLL
+int ep;
+#endif
+
extern int MODCOUNT;
extern std::vector<Module*> modules;
extern std::vector<ircd_module*> factory;
@@ -621,6 +631,17 @@ bool Server::UserToPseudo(userrec* user,std::string message)
log(DEBUG,"kqueue: Failed to remove user from queue!");
}
#endif
+#ifdef USE_EPOLL
+ struct epoll_event ev;
+ ev.events = EPOLLIN | EPOLLET;
+ ev.data.fd = old_fd;
+ int i = epoll_ctl(ep, EPOLL_CTL_DEL, old_fd, &ev);
+ if (i < 0)
+ {
+ log(DEBUG,"epoll: List deletion failure!");
+ }
+#endif
+
shutdown(old_fd,2);
close(old_fd);
}