# HG changeset patch # User Kim Alvefur # Date 1601133991 -7200 # Node ID 4d12a6785531926dd488bdcb7b49c635ed008f9e # Parent c26599a78fae200318acf7089dae429a4eb3c620 util.stanza: Support getting 'by' from util.error object diff -r c26599a78fae -r 4d12a6785531 spec/util_stanza_spec.lua --- a/spec/util_stanza_spec.lua Sat Sep 26 17:18:17 2020 +0200 +++ b/spec/util_stanza_spec.lua Sat Sep 26 17:26:31 2020 +0200 @@ -234,7 +234,7 @@ it("should accept util.error objects", function () local s = st.message({ to = "touser", from = "fromuser", id = "123", type = "chat" }, "Hello"); - local e = errors.new({ type = "modify", condition = "not-acceptable", text = "Bork bork bork" }); + local e = errors.new({ type = "modify", condition = "not-acceptable", text = "Bork bork bork", extra = { by = "this.test" } }); local r = st.error_reply(s, e); assert.are.equal(r.name, s.name); @@ -246,6 +246,7 @@ assert.are.equal(r.tags[1].attr.type, e.type); assert.are.equal(r.tags[1].tags[1].name, e.condition); assert.are.equal(r.tags[1].tags[2]:get_text(), e.text); + assert.are.equal("this.test", r.tags[1].attr.by); end); end); diff -r c26599a78fae -r 4d12a6785531 util/stanza.lua --- a/util/stanza.lua Sat Sep 26 17:18:17 2020 +0200 +++ b/util/stanza.lua Sat Sep 26 17:26:31 2020 +0200 @@ -456,6 +456,9 @@ local t = reply(orig); t.attr.type = "error"; if type(error_type) == "table" then -- an util.error or similar object + if type(error_type.extra) == "table" then + if type(error_type.extra.by) == "string" then error_by = error_type.extra.by; end + end error_type, condition, error_message = error_type.type, error_type.condition, error_type.text; end if t.attr.from == error_by then