Mercurial > prosody-hg
comparison plugins/mod_c2s.lua @ 5518:0220093e34fa
mod_c2s: Refactor <stream:error> building to allways tostring() it and only call send once
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 25 Apr 2013 17:50:22 +0200 |
| parents | 0b6a99e6c1b1 |
| children | ae9672f4079a |
comparison
equal
deleted
inserted
replaced
| 5517:9d7349bbe4d2 | 5518:0220093e34fa |
|---|---|
| 131 if session.notopen then | 131 if session.notopen then |
| 132 session.send("<?xml version='1.0'?>"); | 132 session.send("<?xml version='1.0'?>"); |
| 133 session.send(st.stanza("stream:stream", default_stream_attr):top_tag()); | 133 session.send(st.stanza("stream:stream", default_stream_attr):top_tag()); |
| 134 end | 134 end |
| 135 if reason then -- nil == no err, initiated by us, false == initiated by client | 135 if reason then -- nil == no err, initiated by us, false == initiated by client |
| 136 local stream_error = st.stanza("stream:error"); | |
| 136 if type(reason) == "string" then -- assume stream error | 137 if type(reason) == "string" then -- assume stream error |
| 137 log("debug", "Disconnecting client, <stream:error> is: %s", reason); | 138 stream_error:tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' }); |
| 138 session.send(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); | |
| 139 elseif type(reason) == "table" then | 139 elseif type(reason) == "table" then |
| 140 if reason.condition then | 140 if reason.condition then |
| 141 local stanza = st.stanza("stream:error"):tag(reason.condition, stream_xmlns_attr):up(); | 141 stream_error:tag(reason.condition, stream_xmlns_attr):up(); |
| 142 if reason.text then | 142 if reason.text then |
| 143 stanza:tag("text", stream_xmlns_attr):text(reason.text):up(); | 143 stream_error:tag("text", stream_xmlns_attr):text(reason.text):up(); |
| 144 end | 144 end |
| 145 if reason.extra then | 145 if reason.extra then |
| 146 stanza:add_child(reason.extra); | 146 stream_error:add_child(reason.extra); |
| 147 end | 147 end |
| 148 log("debug", "Disconnecting client, <stream:error> is: %s", tostring(stanza)); | |
| 149 session.send(stanza); | |
| 150 elseif reason.name then -- a stanza | 148 elseif reason.name then -- a stanza |
| 151 log("debug", "Disconnecting client, <stream:error> is: %s", tostring(reason)); | 149 stream_error = reason; |
| 152 session.send(reason); | |
| 153 end | 150 end |
| 154 end | 151 end |
| 152 stream_error = tostring(stream_error); | |
| 153 log("debug", "Disconnecting client, <stream:error> is: %s", stream_error); | |
| 154 session.send(stream_error); | |
| 155 end | 155 end |
| 156 | 156 |
| 157 session.send("</stream:stream>"); | 157 session.send("</stream:stream>"); |
| 158 function session.send() return false; end | 158 function session.send() return false; end |
| 159 | 159 |
