Software / code / prosody
Comparison
util/error.lua @ 11094:03fdf41fd948
util.error: Pass converted stanza errors throguh new()
In order to benefit from common processing
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 27 Sep 2020 00:17:48 +0200 |
| parent | 11092:bd13aa89262d |
| child | 11095:1ea3574b19c8 |
comparison
equal
deleted
inserted
replaced
| 11093:ec14d4fce855 | 11094:03fdf41fd948 |
|---|---|
| 89 }, { wrapped_error = err }); | 89 }, { wrapped_error = err }); |
| 90 | 90 |
| 91 return ok, new_err, ...; | 91 return ok, new_err, ...; |
| 92 end | 92 end |
| 93 | 93 |
| 94 local function from_stanza(stanza, context) | 94 local function from_stanza(stanza, context, source) |
| 95 local error_type, condition, text, extra_tag = stanza:get_error(); | 95 local error_type, condition, text, extra_tag = stanza:get_error(); |
| 96 local error_tag = stanza:get_child("error"); | 96 local error_tag = stanza:get_child("error"); |
| 97 context = context or {}; | 97 context = context or {}; |
| 98 context.stanza = stanza; | 98 context.stanza = stanza; |
| 99 context.by = error_tag.attr.by or stanza.attr.from; | 99 context.by = error_tag.attr.by or stanza.attr.from; |
| 100 | 100 |
| 101 return setmetatable({ | 101 return new({ |
| 102 type = error_type or "cancel"; | 102 type = error_type or "cancel"; |
| 103 condition = condition or "undefined-condition"; | 103 condition = condition or "undefined-condition"; |
| 104 text = text; | 104 text = text; |
| 105 extra = (extra_tag or condition == "gone") and { | 105 extra = (extra_tag or condition == "gone") and { |
| 106 uri = error_tag:get_child_text("gone", "urn:ietf:params:xml:ns:xmpp-stanzas"); | 106 uri = error_tag:get_child_text("gone", "urn:ietf:params:xml:ns:xmpp-stanzas"); |
| 107 tag = extra_tag; | 107 tag = extra_tag; |
| 108 } or nil; | 108 } or nil; |
| 109 | 109 }, context, nil, source); |
| 110 context = context; | |
| 111 | |
| 112 }, error_mt); | |
| 113 end | 110 end |
| 114 | 111 |
| 115 return { | 112 return { |
| 116 new = new; | 113 new = new; |
| 117 init = init; | 114 init = init; |