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