Diff

plugins/mod_s2s/mod_s2s.lua @ 5274:0d08c0965824

mod_s2s: Remove connection from sessions table as soon as we learn it is disconnected. Fixes a connection/session leak.
author Matthew Wild <mwild1@gmail.com>
date Fri, 28 Dec 2012 12:47:44 +0000
parent 5173:b22d24b5a89a
child 5281:815c689f85ad
line wrap: on
line diff
--- a/plugins/mod_s2s/mod_s2s.lua	Thu Dec 27 20:44:58 2012 +0100
+++ b/plugins/mod_s2s/mod_s2s.lua	Fri Dec 28 12:47:44 2012 +0000
@@ -485,6 +485,7 @@
 function listener.ondisconnect(conn, err)
 	local session = sessions[conn];
 	if session then
+		sessions[conn] = nil;
 		if err and session.direction == "outgoing" and session.notopen then
 			(session.log or log)("debug", "s2s connection attempt failed: %s", err);
 			if s2sout.attempt_connection(session, err) then
@@ -494,7 +495,6 @@
 		end
 		(session.log or log)("debug", "s2s disconnected: %s->%s (%s)", tostring(session.from_host), tostring(session.to_host), tostring(err or "connection closed"));
 		s2s_destroy_session(session, err);
-		sessions[conn] = nil;
 	end
 end