Fix sending of unavailable presence on disconnect
authorMatthew Wild <mwild1@gmail.com>
Wed, 19 Nov 2008 05:07:52 +0000 (05:07 +0000)
committerMatthew Wild <mwild1@gmail.com>
Wed, 19 Nov 2008 05:07:52 +0000 (05:07 +0000)
core/sessionmanager.lua

index 74edb86cca827a92f99ee86e5e4d8e738e25a69b..7a0d6a49044b6410b030a251d625cc839db3aab0 100644 (file)
@@ -14,6 +14,8 @@ local error = error;
 local uuid_generate = require "util.uuid".generate;
 local rm_load_roster = require "core.rostermanager".load_roster;
 
+local st = require "util.stanza";
+
 local newproxy = newproxy;
 local getmetatable = getmetatable;
 
@@ -33,13 +35,13 @@ function new_session(conn)
        return session;
 end
 
-function destroy_session(session)
+function destroy_session(session, err)
        (session.log or log)("info", "Destroying session");
        
        -- Send unavailable presence
        if session.presence then
                local pres = st.presence{ type = "unavailable" };
-               if err == "closed" then err = "connection closed"; end
+               if (not err) or err == "closed" then err = "connection closed"; end
                pres:tag("status"):text("Disconnected: "..err);
                session.stanza_dispatch(pres);
        end