net/server_epoll.lua
changeset 7628 6afafd6d4ef0
parent 7627 23fb3a084956
child 7629 e56343d50293
--- a/net/server_epoll.lua	Mon Aug 22 17:13:39 2016 +0200
+++ b/net/server_epoll.lua	Mon Aug 22 17:19:49 2016 +0200
@@ -263,6 +263,11 @@
 --	log("debug", "epoll_ctl(%q, %d, %q) -> %s" .. (err and ", %q" or ""),
 --		op, fd, flags or "", tostring(ok), err);
 	if not ok then return ok, err end
+	if op == "add" then
+		fds[fd] = self;
+	elseif op == "del" then
+		fds[fd] = nil;
+	end
 	self._flags = flags;
 	return true;
 end
@@ -367,7 +372,6 @@
 	self.destroy = noop;
 	self.close = noop;
 	self.on = noop;
-	fds[self:getfd()] = nil;
 	self.conn:close();
 	self.conn = nil;
 end
@@ -455,8 +459,6 @@
 	if client.getsockname then
 		conn.sockname, conn.sockport = client:getsockname();
 	end
-
-	fds[conn:getfd()] = conn;
 	return conn;
 end
 
@@ -528,7 +530,6 @@
 		sockport = port;
 	}, interface_mt);
 	server:setflags(true, false);
-	fds[server:getfd()] = server;
 	return server;
 end