aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2019-11-25 20:59:36 +0100
committerKim Alvefur <zash@zash.se>2019-11-25 20:59:36 +0100
commit1396c094b678d3e8f91ef6ccf2ccb7cf330541c5 (patch)
treeca8b34f24020ebd3c47343ec16153f79e727c036 /util
parentcb1ec1605974c11ab431aa2537804956f1ecd579 (diff)
downloadprosody-1396c094b678d3e8f91ef6ccf2ccb7cf330541c5.tar.gz
prosody-1396c094b678d3e8f91ef6ccf2ccb7cf330541c5.zip
util.stanza: Support the 'by' attribute on errors
This is to be used when the entity generating the error is not the same as the one the stanza was directed to, e.g. an intermediate server.
Diffstat (limited to 'util')
-rw-r--r--util/stanza.lua7
1 files changed, 5 insertions, 2 deletions
diff --git a/util/stanza.lua b/util/stanza.lua
index 8ff1aae3..8e46f90f 100644
--- a/util/stanza.lua
+++ b/util/stanza.lua
@@ -447,7 +447,7 @@ local function reply(orig)
end
local xmpp_stanzas_attr = { xmlns = xmlns_stanzas };
-local function error_reply(orig, error_type, condition, error_message)
+local function error_reply(orig, error_type, condition, error_message, error_by)
if not is_stanza(orig) then
error("bad argument to error_reply: expected stanza, got "..type(orig));
elseif orig.attr.type == "error" then
@@ -455,7 +455,10 @@ local function error_reply(orig, error_type, condition, error_message)
end
local t = reply(orig);
t.attr.type = "error";
- t:tag("error", {type = error_type}) --COMPAT: Some day xmlns:stanzas goes here
+ if t.attr.from == error_by then
+ error_by = nil;
+ end
+ t:tag("error", {type = error_type, by = error_by}) --COMPAT: Some day xmlns:stanzas goes here
:tag(condition, xmpp_stanzas_attr):up();
if error_message then t:text_tag("text", error_message, xmpp_stanzas_attr); end
return t; -- stanza ready for adding app-specific errors