# HG changeset patch # User Kim Alvefur # Date 1679062286 -3600 # Node ID 2f61ebcf37c03fe63313eab6eaed12089b2a6f0b # Parent 29983f09c913c89d5df9b6fb3c1be9c08ea4e66e 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" diff -r 29983f09c913 -r 2f61ebcf37c0 loader.lua --- a/loader.lua Fri Mar 17 14:36:02 2023 +0100 +++ b/loader.lua Fri Mar 17 15:11:26 2023 +0100 @@ -19,3 +19,17 @@ 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; +})