Software /
code /
prosody
Changeset
2587:c37f971f0fe6
prosody, prosodyctl: Re-jiggle load order again, fixes logging config not being obeyed (thanks darkrain)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 11 Feb 2010 11:31:14 +0000 |
parents | 2586:26ead5e16cd3 |
children | 2588:741302471a23 |
files | prosody prosodyctl |
diffstat | 2 files changed, 43 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/prosody Thu Feb 11 11:04:26 2010 +0000 +++ b/prosody Thu Feb 11 11:31:14 2010 +0000 @@ -32,34 +32,6 @@ end end --- Initialize logging -require "core.loggingmanager" - --- Check runtime dependencies -if not require "util.dependencies".check_dependencies() then - os.exit(1); -end - --- Replace require() with one that doesn't pollute _G, required --- for neat sandboxing of modules -do - local _realG = _G; - local _real_require = require; - function require(...) - local curr_env = getfenv(2); - local curr_env_mt = getmetatable(getfenv(2)); - local _realG_mt = getmetatable(_realG); - if curr_env_mt and curr_env_mt.__index and not curr_env_mt.__newindex and _realG_mt then - local old_newindex - old_newindex, _realG_mt.__newindex = _realG_mt.__newindex, curr_env; - local ret = _real_require(...); - _realG_mt.__newindex = old_newindex; - return ret; - end - return _real_require(...); - end -end - -- Load the config-parsing module config = require "core.configmanager" @@ -119,6 +91,38 @@ server = require "net.server" end +function init_logging() + -- Initialize logging + require "core.loggingmanager" +end + +function check_dependencies() + -- Check runtime dependencies + if not require "util.dependencies".check_dependencies() then + os.exit(1); + end +end + +function sandbox_require() + -- Replace require() with one that doesn't pollute _G, required + -- for neat sandboxing of modules + local _realG = _G; + local _real_require = require; + function require(...) + local curr_env = getfenv(2); + local curr_env_mt = getmetatable(getfenv(2)); + local _realG_mt = getmetatable(_realG); + if curr_env_mt and curr_env_mt.__index and not curr_env_mt.__newindex and _realG_mt then + local old_newindex + old_newindex, _realG_mt.__newindex = _realG_mt.__newindex, curr_env; + local ret = _real_require(...); + _realG_mt.__newindex = old_newindex; + return ret; + end + return _real_require(...); + end +end + function init_global_state() bare_sessions = {}; full_sessions = {}; @@ -407,7 +411,12 @@ end -- Are you ready? :) +-- These actions are in a strict order, as many depend on +-- previous steps to have already been performed read_config(); +init_logging(); +check_dependencies(); +sandbox_require(); load_libraries(); init_global_state(); read_version();
--- a/prosodyctl Thu Feb 11 11:04:26 2010 +0000 +++ b/prosodyctl Thu Feb 11 11:31:14 2010 +0000 @@ -29,12 +29,6 @@ end end -require "core.loggingmanager" - -if not require "util.dependencies".check_dependencies() then - os.exit(1); -end - config = require "core.configmanager" do @@ -63,6 +57,12 @@ end end +require "core.loggingmanager" + +if not require "util.dependencies".check_dependencies() then + os.exit(1); +end + prosody = { hosts = {}, events = events, platform = "posix" }; local data_path = config.get("*", "core", "data_path") or CFG_DATADIR or "data";