aboutsummaryrefslogtreecommitdiffstats
path: root/util/error.lua
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2020-09-25 16:39:22 +0100
committerMatthew Wild <mwild1@gmail.com>2020-09-25 16:39:22 +0100
commita34633771db29e751058f93b1abbfd6801283364 (patch)
treeb21945cf5c6638fe9b1b679825ab0c65e61b7c56 /util/error.lua
parent2595c39a8a79ea65a100709877548efeb0c1e061 (diff)
downloadprosody-a34633771db29e751058f93b1abbfd6801283364.tar.gz
prosody-a34633771db29e751058f93b1abbfd6801283364.zip
util.error: Simplify error creation flow
Diffstat (limited to 'util/error.lua')
-rw-r--r--util/error.lua14
1 files changed, 13 insertions, 1 deletions
diff --git a/util/error.lua b/util/error.lua
index 976bc355..cfb35350 100644
--- a/util/error.lua
+++ b/util/error.lua
@@ -35,7 +35,19 @@ end
-- What to set `type` to for stream errors or SASL errors? Those don't have a 'type' attr.
local function new(e, context, registry, source)
- local template = (registry and registry[e]) or e or {};
+ local template = registry and registry[e];
+ if not template then
+ if type(e) == "table" then
+ template = {
+ code = e.code;
+ type = e.type;
+ condition = e.condition;
+ text = e.text;
+ };
+ else
+ template = {};
+ end
+ end
context = context or {};
if auto_inject_traceback then