67 return true; |
67 return true; |
68 end |
68 end |
69 |
69 |
70 |
70 |
71 local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'}; |
71 local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'}; |
|
72 local default_stream_attr = { ["xmlns:stream"] = stream_callbacks.stream_tag:gsub("%|[^|]+$", ""), xmlns = stream_callbacks.default_ns, version = "1.0", id = "" }; |
72 local function session_close(session, reason) |
73 local function session_close(session, reason) |
73 local log = session.log or log; |
74 local log = session.log or log; |
74 if session.conn then |
75 if session.conn then |
|
76 if session.notopen then |
|
77 session.sends2s("<?xml version='1.0'?>"); |
|
78 session.sends2s(st.stanza("stream:stream", default_stream_attr):top_tag()); |
|
79 end |
75 if reason then |
80 if reason then |
76 if type(reason) == "string" then -- assume stream error |
81 if type(reason) == "string" then -- assume stream error |
77 log("info", "Disconnecting %s[%s], <stream:error> is: %s", session.host or "(unknown host)", session.type, reason); |
82 log("info", "Disconnecting %s[%s], <stream:error> is: %s", session.host or "(unknown host)", session.type, reason); |
78 session.sends2s(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); |
83 session.sends2s(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); |
79 elseif type(reason) == "table" then |
84 elseif type(reason) == "table" then |