aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xprosodyctl23
-rw-r--r--util/prosodyctl.lua16
2 files changed, 38 insertions, 1 deletions
diff --git a/prosodyctl b/prosodyctl
index bb90b685..470a7d55 100755
--- a/prosodyctl
+++ b/prosodyctl
@@ -538,6 +538,27 @@ function commands.about(arg)
print("");
end
+function commands.reload(arg)
+ if arg[1] == "--help" then
+ show_usage([[reload]], [[Reload prosody configuration file]]);
+ return 1;
+ end
+
+ if not prosodyctl.isrunning() then
+ show_message("Prosody is not running");
+ return 1;
+ end
+
+ local ok, ret = prosodyctl.reload();
+ if ok then
+
+ show_message("Config updated");
+ return 0;
+ end
+
+ show_message(error_messages[ret]);
+ return 1;
+end
-- ejabberdctl compatibility
function commands.register(arg)
@@ -641,7 +662,7 @@ if not commands[command] then -- Show help for all commands
print("Where COMMAND may be one of:\n");
local hidden_commands = require "util.set".new{ "register", "unregister", "addplugin" };
- local commands_order = { "adduser", "passwd", "deluser", "start", "stop", "restart", "about" };
+ local commands_order = { "adduser", "passwd", "deluser", "start", "stop", "restart", "reload", "about" };
local done = {};
diff --git a/util/prosodyctl.lua b/util/prosodyctl.lua
index aa1850b2..d0045abc 100644
--- a/util/prosodyctl.lua
+++ b/util/prosodyctl.lua
@@ -238,3 +238,19 @@ function stop()
signal.kill(pid, signal.SIGTERM);
return true;
end
+
+function reload()
+ local ok, ret = _M.isrunning();
+ if not ok then
+ return ok, ret;
+ end
+ if not ret then
+ return false, "not-running";
+ end
+
+ local ok, pid = _M.getpid()
+ if not ok then return false, pid; end
+
+ signal.kill(pid, signal.SIGHUP);
+ return true;
+end