The ucode side dispatcher environment might not be fully populated yet
when the emulated Lua dispatcher is loaded, leading to `context.requested`
and some other properties to be `nil`.
Expose all properties through metatable `__index` lookups instead to
ensure that the Lua side dispatcher always sees the latest values.
Fixes: #6100
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
local http = _G.L.http
-context = setmetatable({
- request = _G.L.ctx.request_path;
- requested = _G.L.node;
- dispatched = _G.L.node;
-}, {
+context = setmetatable({}, {
__index = function(t, k)
- if k == "requestpath" then
+ if k == "request" or k == "requestpath" then
return _G.L.ctx.request_path
elseif k == "requestargs" then
return _G.L.ctx.request_args
+ elseif k == "requested" or k == "dispatched" then
+ return _G.L.node
else
return _G.L.ctx[k]
end