From 93ddf6892ca32532ff4296e3ac01cd240eb1d56b Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Fri, 17 Mar 2023 15:11:26 +0100 Subject: prosody.loader: Ensure already loaded modules are found in old and new namespaces Prevents modules being initialized twice, ensuring that require"prosody.util.foo" == require"util.foo" --- loader.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/loader.lua b/loader.lua index ddd25a82..9c2176a7 100644 --- a/loader.lua +++ b/loader.lua @@ -19,3 +19,17 @@ else end) end end + +-- Look for already loaded module with or without prefix +setmetatable(package.loaded, { + __index = function(loaded, module_name) + local suffix = module_name:match("^prosody%.(.*)$"); + if suffix then + return rawget(loaded, suffix); + end + local prefixed = rawget(loaded, "prosody." .. module_name); + if prefixed ~= nil then + return prefixed; + end + end; +}) -- cgit v1.2.3