85 return core_process_stanza(session, stanza); |
85 return core_process_stanza(session, stanza); |
86 end |
86 end |
87 |
87 |
88 --- Closing a component connection |
88 --- Closing a component connection |
89 local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'}; |
89 local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'}; |
|
90 local default_stream_attr = { ["xmlns:stream"] = stream_callbacks.stream_tag:gsub("%|[^|]+$", ""), xmlns = stream_callbacks.default_ns, version = "1.0", id = "" }; |
90 local function session_close(session, reason) |
91 local function session_close(session, reason) |
91 local log = session.log or log; |
92 local log = session.log or log; |
92 if session.conn then |
93 if session.conn then |
|
94 if session.notopen then |
|
95 session.send("<?xml version='1.0'?>"); |
|
96 session.send(st.stanza("stream:stream", default_stream_attr):top_tag()); |
|
97 end |
93 if reason then |
98 if reason then |
94 if type(reason) == "string" then -- assume stream error |
99 if type(reason) == "string" then -- assume stream error |
95 log("info", "Disconnecting component, <stream:error> is: %s", reason); |
100 log("info", "Disconnecting component, <stream:error> is: %s", reason); |
96 session.send(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); |
101 session.send(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); |
97 elseif type(reason) == "table" then |
102 elseif type(reason) == "table" then |