Avoid making an epoll_ctl() call that will always fail with EBADF.
authorMichael Poole <mdpoole@troilus.org>
Wed, 10 Nov 2004 03:37:36 +0000 (03:37 +0000)
committerMichael Poole <mdpoole@troilus.org>
Wed, 10 Nov 2004 03:37:36 +0000 (03:37 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1267 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/engine_epoll.c

index 9a00b2bfbaf5331f1187a16abdfe1be35ad8c69e..6a020d1fc89ab89f48794f601b2f7e92f84408d7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-09  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/engine_epoll.c (engine_delete): Do not attempt to remove a
+       socket from epoll on delete, since the kernel does that for us.
+
 2004-11-07  Michael Poole <mdpoole@troilus.org>
 
        * ircd/m_server.c (m_server, ms_server): Assign timestamp before
index 257e70d998d38df60b9a4c6b32f356ec37cf64ae..c44e135da44d01bdd4f9760da23db177bbb29d2e 100644 (file)
@@ -212,15 +212,10 @@ engine_set_events(struct Socket *sock, unsigned new_events)
 static void
 engine_delete(struct Socket *sock)
 {
-  struct epoll_event evt;
-
   assert(0 != sock);
-  memset(&evt, 0, sizeof(evt));
   Debug((DEBUG_ENGINE, "epoll: Deleting socket %d [%p], state %s",
         s_fd(sock), sock, state_to_name(s_state(sock))));
-  if (epoll_ctl(epoll_fd, EPOLL_CTL_DEL, s_fd(sock), &evt) < 0)
-    log_write(LS_SOCKET, L_WARNING, 0,
-              "Unable to delete epoll item for socket %d", s_fd(sock));
+  /* No action necessary; epoll removes the socket on close(). */
 }
 
 /** Run engine event loop.