Software / code / prosody
Comparison
plugins/mod_component.lua @ 11868:ae093c259da2
mod_c2s,etc: Identify stanza object with appropriate function
Better than duck typing, in case anyone ever passes a non-stanza table
with a 'name' field.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 24 Oct 2021 15:17:01 +0200 |
| parent | 11560:3bbb1af92514 |
| child | 12686:5f182bccf33f |
comparison
equal
deleted
inserted
replaced
| 11867:bb20cfd4884f | 11868:ae093c259da2 |
|---|---|
| 263 end | 263 end |
| 264 if reason then | 264 if reason then |
| 265 if type(reason) == "string" then -- assume stream error | 265 if type(reason) == "string" then -- assume stream error |
| 266 module:log("info", "Disconnecting component, <stream:error> is: %s", reason); | 266 module:log("info", "Disconnecting component, <stream:error> is: %s", reason); |
| 267 session.send(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); | 267 session.send(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); |
| 268 elseif st.is_stanza(reason) then | |
| 269 module:log("info", "Disconnecting component, <stream:error> is: %s", reason); | |
| 270 session.send(reason); | |
| 268 elseif type(reason) == "table" then | 271 elseif type(reason) == "table" then |
| 269 if reason.condition then | 272 if reason.condition then |
| 270 local stanza = st.stanza("stream:error"):tag(reason.condition, stream_xmlns_attr):up(); | 273 local stanza = st.stanza("stream:error"):tag(reason.condition, stream_xmlns_attr):up(); |
| 271 if reason.text then | 274 if reason.text then |
| 272 stanza:tag("text", stream_xmlns_attr):text(reason.text):up(); | 275 stanza:tag("text", stream_xmlns_attr):text(reason.text):up(); |
| 274 if reason.extra then | 277 if reason.extra then |
| 275 stanza:add_child(reason.extra); | 278 stanza:add_child(reason.extra); |
| 276 end | 279 end |
| 277 module:log("info", "Disconnecting component, <stream:error> is: %s", stanza); | 280 module:log("info", "Disconnecting component, <stream:error> is: %s", stanza); |
| 278 session.send(stanza); | 281 session.send(stanza); |
| 279 elseif reason.name then -- a stanza | |
| 280 module:log("info", "Disconnecting component, <stream:error> is: %s", reason); | |
| 281 session.send(reason); | |
| 282 end | 282 end |
| 283 end | 283 end |
| 284 end | 284 end |
| 285 session.send("</stream:stream>"); | 285 session.send("</stream:stream>"); |
| 286 session.conn:close(); | 286 session.conn:close(); |