Clean up session when s2s connections are disconnected
authorMatthew Wild <mwild1@gmail.com>
Fri, 24 Oct 2008 17:13:54 +0000 (18:13 +0100)
committerMatthew Wild <mwild1@gmail.com>
Fri, 24 Oct 2008 17:13:54 +0000 (18:13 +0100)
net/xmppserver_listener.lua

index 7c5b0d9cb62fc528038434440f83fce2d5219c26..111633d80366ffc3857d944070f80c2a3773bef1 100644 (file)
@@ -5,6 +5,7 @@ local init_xmlhandlers = require "core.xmlhandlers"
 local sm_new_session = require "core.sessionmanager".new_session;
 local s2s_new_incoming = require "core.s2smanager".new_incoming;
 local s2s_streamopened = require "core.s2smanager".streamopened;
+local s2s_destroy_session = require "core.s2smanager".destroy_session;
 
 local connlisteners_register = require "net.connlisteners".register;
 
@@ -70,6 +71,13 @@ function xmppserver.listener(conn, data)
 end
        
 function xmppserver.disconnect(conn)
+       local session = sessions[conn];
+       if session then
+               s2s_destroy_session(session);
+               sessions[conn]  = nil;
+               session = nil;
+               collectgarbage("collect");
+       end
 end
 
 function xmppserver.register_outgoing(conn, session)