Software /
code /
prosody
Comparison
net/xmppclient_listener.lua @ 275:7af22e56d625
Fix logging of disconnect reason, and also sending of unavailable presence on disconnect
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 15 Nov 2008 19:32:58 +0000 |
parent | 267:6303b7454ad0 |
child | 318:cc20ea4a8697 |
comparison
equal
deleted
inserted
replaced
274:9e68a697435d | 275:7af22e56d625 |
---|---|
71 if data then | 71 if data then |
72 session.data(conn, data); | 72 session.data(conn, data); |
73 end | 73 end |
74 end | 74 end |
75 | 75 |
76 function xmppclient.disconnect(conn) | 76 function xmppclient.disconnect(conn, err) |
77 local session = sessions[conn]; | 77 local session = sessions[conn]; |
78 if session then | 78 if session then |
79 if session.last_presence and session.last_presence.attr.type ~= "unavailable" then | 79 if session.presence and session.presence.attr.type ~= "unavailable" then |
80 local pres = st.presence{ type = "unavailable" }; | 80 local pres = st.presence{ type = "unavailable" }; |
81 if err == "closed" then err = "connection closed"; end --FIXME where did err come from? | 81 if err == "closed" then err = "connection closed"; end |
82 pres:tag("status"):text("Disconnected: "..err); | 82 pres:tag("status"):text("Disconnected: "..err); |
83 session.stanza_dispatch(pres); | 83 session.stanza_dispatch(pres); |
84 end | 84 end |
85 session.log("info", "Client disconnected: %s", err); | |
85 sm_destroy_session(session); | 86 sm_destroy_session(session); |
86 sessions[conn] = nil; | 87 sessions[conn] = nil; |
87 session = nil; | 88 session = nil; |
88 collectgarbage("collect"); | 89 collectgarbage("collect"); |
89 end | 90 end |