luci-base: fix rendering of 404 HTML error template

This 404 error template rendering has been broken for a long time due to bad
function environment level in luci.template when invoking the rendering from
the toplevel dispatcher context.

Fix this issue by adding a local function indirection, essentially adding an
additional stack frame.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2018-04-10 12:03:15 +02:00
parent 48a5864f06
commit 2b516423a0

View file

@ -75,11 +75,16 @@ function error404(message)
http.status(404, "Not Found")
message = message or "Not Found"
require("luci.template")
if not util.copcall(luci.template.render, "error404") then
local function render()
local template = require "luci.template"
template.render("error404")
end
if not util.copcall(render) then
http.prepare_content("text/plain")
http.write(message)
end
return false
end