# HG changeset patch # User Waqas Hussain # Date 1246797944 -18000 # Node ID eef17ebe3ca1c13a9757dfd35ff3f0676710aaed # Parent da11f2652ae9bcebfe9f47da6289855956492bfc Moved automatic unavailable presence generation on disconnect from sessionmanager to mod_presence diff -r da11f2652ae9 -r eef17ebe3ca1 core/sessionmanager.lua --- a/core/sessionmanager.lua Sun Jul 05 16:21:58 2009 +0500 +++ b/core/sessionmanager.lua Sun Jul 05 17:45:44 2009 +0500 @@ -56,14 +56,6 @@ function destroy_session(session, err) (session.log or log)("info", "Destroying session for %s (%s@%s)", session.full_jid or "(unknown)", session.username or "(unknown)", session.host or "(unknown)"); - -- Send unavailable presence - if session.presence then - local pres = st.presence{ type = "unavailable" }; - if (not err) or err == "closed" then err = "connection closed"; end - pres:tag("status"):text("Disconnected: "..err):up(); - session:dispatch_stanza(pres); - end - -- Remove session/resource from user's session list if session.full_jid then hosts[session.host].events.fire_event("resource-unbind", {session=session, error=err}); diff -r da11f2652ae9 -r eef17ebe3ca1 plugins/mod_presence.lua --- a/plugins/mod_presence.lua Sun Jul 05 16:21:58 2009 +0500 +++ b/plugins/mod_presence.lua Sun Jul 05 17:45:44 2009 +0500 @@ -315,3 +315,14 @@ end -- resource not online, discard return true; end); + +module:hook("resource-unbind", function(event) + local session, err = event.session, event.error; + -- Send unavailable presence + if session.presence then + local pres = st.presence{ type = "unavailable" }; + if not(err) or err == "closed" then err = "connection closed"; end + pres:tag("status"):text("Disconnected: "..err):up(); + session:dispatch_stanza(pres); + end +end);