# HG changeset patch # User Kim Alvefur # Date 1742141091 -3600 # Node ID ac7e2992fe6e1ec7775fb223855e056ab4c92578 # Parent 8ff8121ff603b755ec2ee7ab19c23614691d4c4b mod_rest: Strip down error payloads to avoid stack overflow When the util.error feature of including a traceback in the error, util.json can't serialize it as it is often self-referential. diff -r 8ff8121ff603 -r ac7e2992fe6e mod_rest/mod_rest.lua --- a/mod_rest/mod_rest.lua Thu Mar 13 13:00:26 2025 +0000 +++ b/mod_rest/mod_rest.lua Sun Mar 16 17:04:51 2025 +0100 @@ -662,6 +662,17 @@ "application/json", }; +-- strip some stuff, notably the optional traceback table that casues stack overflow in util.json +local function simplify_error(e) + return { + type = e.type; + condition = e.condition; + text = e.text; + extra = e.extra; + source = e.source; + }; +end + local http_server = require "net.http.server"; module:hook_object_event(http_server, "http-error", function (event) local request, response = event.request, event.response; @@ -684,7 +695,7 @@ end return json.encode({ type = "error", - error = event.error, + error = simplify_error(event.error), code = event.code, }); end