Changeset

10284:cd669975031b

net.server_epoll: Fix link function to not replace listeners mod_proxy65 calls link twice, once for each direction. This would overwrite the listeners with one that has the previous listeners as metatable.__index, but none of the others. This takes advantage of 94c584d67533 to improve this.
author Kim Alvefur <zash@zash.se>
date Sun, 29 Sep 2019 15:41:01 +0200
parents 10283:dff360d00dfa
children 10285:bcf61e22f841
files net/server_epoll.lua
diffstat 1 files changed, 5 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/net/server_epoll.lua	Sun Sep 29 15:36:23 2019 +0200
+++ b/net/server_epoll.lua	Sun Sep 29 15:41:01 2019 +0200
@@ -793,17 +793,13 @@
 -- Dump all data from one connection into another
 local function link(from, to, read_size)
 	from:debug("Linking to %s", to.id);
-	from.listeners = setmetatable({
-		onincoming = function (_, data)
-			from:pause();
+	function from:onincoming(data)
+		self:pause();
 			to:write(data);
-		end,
-	}, {__index=from.listeners});
-	to.listeners = setmetatable({
-		ondrain = function ()
+	end
+	function to:ondrain()
 			from:resume();
-		end,
-	}, {__index=to.listeners});
+	end
 	from:set_mode(read_size);
 	from:set(true, nil);
 	to:set(nil, true);