# HG changeset patch # User Matthew Wild # Date 1777459041 -3600 # Node ID 9c98cc9d95885b142aa5e07390a34e8aa57ee352 # Parent 4b8cf9420cf1948757d8c5f826f0e0e31c26ee72 mod_proxy65: Don't link connections until after activation Although the module pauses the connections, in some cases server.link() (at least with the epoll backend) will have the effect of unpausing the connection (because it sets new read handlers). Many thanks to Max Hearnden for discovering and reporting this issue. diff -r 4b8cf9420cf1 -r 9c98cc9d9588 plugins/mod_proxy65.lua --- a/plugins/mod_proxy65.lua Wed Apr 29 11:33:54 2026 +0100 +++ b/plugins/mod_proxy65.lua Wed Apr 29 11:37:21 2026 +0100 @@ -60,8 +60,6 @@ transfers[sha].initiator = conn; session.sha = sha; module:log("debug", "SOCKS5 initiator connected for session %s", sha); - server.link(conn, transfers[sha].target, max_buffer_size); - server.link(transfers[sha].target, conn, max_buffer_size); end else -- error, unexpected input conn:write("\5\1\0\3\0\0\0"); -- VER, REP, RSV, ATYP, BND.ADDR (sha), BND.PORT (2 Byte) @@ -166,6 +164,8 @@ else -- if transfers[sha].initiator ~= nil and transfers[sha].target ~= nil then module:log("debug", "Transfer activated (%s)", info); transfers[sha].activated = true; + server.link(transfers[sha].initiator, transfers[sha].target, max_buffer_size); + server.link(transfers[sha].target, transfers[sha].initiator, max_buffer_size); transfers[sha].target:resume(); transfers[sha].initiator:resume(); origin.send(st.reply(stanza));