Software / code / prosody
Comparison
core/modulemanager.lua @ 10434:8f709577fe8e
Merge 0.11->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 23 Nov 2019 23:12:01 +0100 |
| parent | 10433:7777f25d5266 |
| parent | 10288:f36f7d2c269b |
| child | 10530:67d56dacc79c |
comparison
equal
deleted
inserted
replaced
| 10433:7777f25d5266 | 10434:8f709577fe8e |
|---|---|
| 21 local xpcall = require "util.xpcall".xpcall; | 21 local xpcall = require "util.xpcall".xpcall; |
| 22 local debug_traceback = debug.traceback; | 22 local debug_traceback = debug.traceback; |
| 23 local setmetatable, rawget = setmetatable, rawget; | 23 local setmetatable, rawget = setmetatable, rawget; |
| 24 local ipairs, pairs, type, t_insert = ipairs, pairs, type, table.insert; | 24 local ipairs, pairs, type, t_insert = ipairs, pairs, type, table.insert; |
| 25 | 25 |
| 26 local autoload_modules = {prosody.platform, "presence", "message", "iq", "offline", "c2s", "s2s", "s2s_auth_certs"}; | 26 local autoload_modules = { |
| 27 local component_inheritable_modules = {"tls", "saslauth", "dialback", "iq", "s2s"}; | 27 prosody.platform, |
| 28 "presence", | |
| 29 "message", | |
| 30 "iq", | |
| 31 "offline", | |
| 32 "c2s", | |
| 33 "s2s", | |
| 34 "s2s_auth_certs", | |
| 35 }; | |
| 36 local component_inheritable_modules = { | |
| 37 "tls", | |
| 38 "saslauth", | |
| 39 "dialback", | |
| 40 "iq", | |
| 41 "s2s", | |
| 42 "s2s_bidi", | |
| 43 }; | |
| 28 | 44 |
| 29 -- We need this to let modules access the real global namespace | 45 -- We need this to let modules access the real global namespace |
| 30 local _G = _G; | 46 local _G = _G; |
| 31 | 47 |
| 32 local _ENV = nil; | 48 local _ENV = nil; |
| 172 api_instance.environment = pluginenv; | 188 api_instance.environment = pluginenv; |
| 173 | 189 |
| 174 local mod, err = pluginloader.load_code(module_name, nil, pluginenv); | 190 local mod, err = pluginloader.load_code(module_name, nil, pluginenv); |
| 175 if not mod then | 191 if not mod then |
| 176 log("error", "Unable to load module '%s': %s", module_name or "nil", err or "nil"); | 192 log("error", "Unable to load module '%s': %s", module_name or "nil", err or "nil"); |
| 193 api_instance:set_status("error", "Failed to load (see log)"); | |
| 177 return nil, err; | 194 return nil, err; |
| 178 end | 195 end |
| 179 | 196 |
| 180 api_instance.path = err; | 197 api_instance.path = err; |
| 181 | 198 |
| 185 -- Call module's "load" | 202 -- Call module's "load" |
| 186 if module_has_method(pluginenv, "load") then | 203 if module_has_method(pluginenv, "load") then |
| 187 ok, err = call_module_method(pluginenv, "load"); | 204 ok, err = call_module_method(pluginenv, "load"); |
| 188 if not ok then | 205 if not ok then |
| 189 log("warn", "Error loading module '%s' on '%s': %s", module_name, host, err or "nil"); | 206 log("warn", "Error loading module '%s' on '%s': %s", module_name, host, err or "nil"); |
| 207 api_instance:set_status("warn", "Error during load (see log)"); | |
| 190 end | 208 end |
| 191 end | 209 end |
| 192 api_instance.reloading, api_instance.saved_state = nil, nil; | 210 api_instance.reloading, api_instance.saved_state = nil, nil; |
| 193 | 211 |
| 194 if api_instance.host == "*" then | 212 if api_instance.host == "*" then |
| 207 end | 225 end |
| 208 end | 226 end |
| 209 if not ok then | 227 if not ok then |
| 210 modulemap[api_instance.host][module_name] = nil; | 228 modulemap[api_instance.host][module_name] = nil; |
| 211 log("error", "Error initializing module '%s' on '%s': %s", module_name, host, err or "nil"); | 229 log("error", "Error initializing module '%s' on '%s': %s", module_name, host, err or "nil"); |
| 230 api_instance:set_status("warn", "Error during load (see log)"); | |
| 231 else | |
| 232 api_instance:set_status("core", "Loaded", false); | |
| 212 end | 233 end |
| 213 return ok and pluginenv, err; | 234 return ok and pluginenv, err; |
| 214 end | 235 end |
| 215 | 236 |
| 216 local function do_reload_module(host, name) | 237 local function do_reload_module(host, name) |