projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mod_storage_sql: Add LIMIT clause to queries where only a single row is expected
[prosody.git]
/
prosody
diff --git
a/prosody
b/prosody
index 5802c348ee68995331e36b9969802ad73ef5a369..6a3b50db1c72e66548f637165911b568534e6918 100755
(executable)
--- a/
prosody
+++ b/
prosody
@@
-43,15
+43,18
@@
if CFG_DATADIR then
end
end
end
end
+if #arg > 0 and arg[1] ~= "--config" then
+ print("Unknown command-line option: "..tostring(arg[1]));
+ print("Perhaps you meant to use prosodyctl instead?");
+ return 1;
+end
+
-- Global 'prosody' object
local prosody = { events = require "util.events".new(); };
_G.prosody = prosody;
-- Check dependencies
local dependencies = require "util.dependencies";
-- Global 'prosody' object
local prosody = { events = require "util.events".new(); };
_G.prosody = prosody;
-- Check dependencies
local dependencies = require "util.dependencies";
-if not dependencies.check_dependencies() then
- os.exit(1);
-end
-- Load the config-parsing module
config = require "core.configmanager"
-- Load the config-parsing module
config = require "core.configmanager"
@@
-86,6
+89,7
@@
function read_config()
break;
end
end
break;
end
end
+ prosody.config_file = filename
local ok, level, err = config.load(filename);
if not ok then
print("\n");
local ok, level, err = config.load(filename);
if not ok then
print("\n");
@@
-115,8
+119,15
@@
function read_config()
end
end
end
end
+function check_dependencies()
+ if not dependencies.check_dependencies() then
+ os.exit(1);
+ end
+end
+
function load_libraries()
-- Load socket framework
function load_libraries()
-- Load socket framework
+ socket = require "socket";
server = require "net.server"
end
server = require "net.server"
end
@@
-147,9
+158,12
@@
function sandbox_require()
-- for neat sandboxing of modules
local _realG = _G;
local _real_require = require;
-- for neat sandboxing of modules
local _realG = _G;
local _real_require = require;
- if not getfenv then
+ local getfenv = getfenv or function (f)
-- FIXME: This is a hack to replace getfenv() in Lua 5.2
-- FIXME: This is a hack to replace getfenv() in Lua 5.2
- function getfenv(f) return debug.getupvalue(debug.getinfo(f or 1).func, 1); end
+ local name, env = debug.getupvalue(debug.getinfo(f or 1).func, 1);
+ if name == "_ENV" then
+ return env;
+ end
end
function require(...)
local curr_env = getfenv(2);
end
function require(...)
local curr_env = getfenv(2);
@@
-207,8
+221,8
@@
function init_global_state()
prosody.full_sessions = full_sessions;
prosody.hosts = hosts;
prosody.full_sessions = full_sessions;
prosody.hosts = hosts;
- local data_path = config.get("*", "
core", "
data_path") or CFG_DATADIR or "data";
- local custom_plugin_paths = config.get("*", "
core", "
plugin_paths");
+ local data_path = config.get("*", "data_path") or CFG_DATADIR or "data";
+ local custom_plugin_paths = config.get("*", "plugin_paths");
if custom_plugin_paths then
local path_sep = package.config:sub(3,3);
-- path1;path2;path3;defaultpath...
if custom_plugin_paths then
local path_sep = package.config:sub(3,3);
-- path1;path2;path3;defaultpath...
@@
-240,7
+254,7
@@
function init_global_state()
function prosody.reload_config()
log("info", "Reloading configuration file");
prosody.events.fire_event("reloading-config");
function prosody.reload_config()
log("info", "Reloading configuration file");
prosody.events.fire_event("reloading-config");
- local ok, level, err = config.load(
(rawget(_G, "CFG_CONFIGDIR") or ".").."/prosody.cfg.lua"
);
+ local ok, level, err = config.load(
prosody.config_file
);
if not ok then
if level == "parser" then
log("error", "There was an error parsing the configuration file: %s", tostring(err));
if not ok then
if level == "parser" then
log("error", "There was an error parsing the configuration file: %s", tostring(err));
@@
-258,18
+272,16
@@
function init_global_state()
end
-- Function to initiate prosody shutdown
end
-- Function to initiate prosody shutdown
- function prosody.shutdown(reason)
+ function prosody.shutdown(reason
, code
)
log("info", "Shutting down: %s", reason or "unknown reason");
prosody.shutdown_reason = reason;
log("info", "Shutting down: %s", reason or "unknown reason");
prosody.shutdown_reason = reason;
- prosody.events.fire_event("server-stopping", {reason = reason});
+ prosody.shutdown_code = code;
+ prosody.events.fire_event("server-stopping", {
+ reason = reason;
+ code = code;
+ });
server.setquitting(true);
end
server.setquitting(true);
end
-
- -- Load SSL settings from config, and create a ctx table
- local certmanager = require "core.certmanager";
- local global_ssl_ctx = certmanager.create_context("*", "server");
- prosody.global_ssl_ctx = global_ssl_ctx;
-
end
function read_version()
end
function read_version()
@@
-290,12
+302,13
@@
function load_secondary_libraries()
--- Load and initialise core modules
require "util.import"
require "util.xmppstream"
--- Load and initialise core modules
require "util.import"
require "util.xmppstream"
- require "core.rostermanager"
require "core.stanza_router"
require "core.stanza_router"
+ require "core.statsmanager"
require "core.hostmanager"
require "core.portmanager"
require "core.modulemanager"
require "core.usermanager"
require "core.hostmanager"
require "core.portmanager"
require "core.modulemanager"
require "core.usermanager"
+ require "core.rostermanager"
require "core.sessionmanager"
package.loaded['core.componentmanager'] = setmetatable({},{__index=function()
log("warn", "componentmanager is deprecated: %s", debug.traceback():match("\n[^\n]*\n[ \t]*([^\n]*)"));
require "core.sessionmanager"
package.loaded['core.componentmanager'] = setmetatable({},{__index=function()
log("warn", "componentmanager is deprecated: %s", debug.traceback():match("\n[^\n]*\n[ \t]*([^\n]*)"));
@@
-369,8
+382,10
@@
function loop()
prosody.events.fire_event("very-bad-error", {error = err, traceback = traceback});
end
prosody.events.fire_event("very-bad-error", {error = err, traceback = traceback});
end
+ local sleep = require"socket".sleep;
+
while select(2, xpcall(server.loop, catch_uncaught_error)) ~= "quitting" do
while select(2, xpcall(server.loop, catch_uncaught_error)) ~= "quitting" do
- s
ocket.s
leep(0.2);
+ sleep(0.2);
end
end
end
end
@@
-387,6
+402,7
@@
init_logging();
sanity_check();
sandbox_require();
set_function_metatable();
sanity_check();
sandbox_require();
set_function_metatable();
+check_dependencies();
load_libraries();
init_global_state();
read_version();
load_libraries();
init_global_state();
read_version();
@@
-406,3
+422,4
@@
cleanup();
prosody.events.fire_event("server-stopped");
log("info", "Shutdown complete");
prosody.events.fire_event("server-stopped");
log("info", "Shutdown complete");
+os.exit(prosody.shutdown_code)