# HG changeset patch
# User Matthew Wild <mwild1@gmail.com>
# Date 1227071272 0
# Node ID c6446bbfe40c03b1c2565b0f1b2cc379a50b325c
# Parent  804f5e62a41f8cb38f031ddb65c14129664f8041
Fix sending of unavailable presence on disconnect

diff -r 804f5e62a41f -r c6446bbfe40c core/sessionmanager.lua
--- a/core/sessionmanager.lua	Wed Nov 19 05:02:13 2008 +0000
+++ b/core/sessionmanager.lua	Wed Nov 19 05:07:52 2008 +0000
@@ -14,6 +14,8 @@
 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 @@
 	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