diff options
author | Kim Alvefur <zash@zash.se> | 2021-09-20 15:51:43 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2021-09-20 15:51:43 +0200 |
commit | da8329037d6ee0cd1514437cd9c5ac1e73188027 (patch) | |
tree | 451443aa649e739a5f9aa193f8e956f6fc74b4c9 | |
parent | b49c57d53ff76e47389f7bb9fa6d5d0853fd2b66 (diff) | |
parent | 24111569bb5b75ea37cbf2c29d49d88206365ae2 (diff) | |
download | prosody-da8329037d6ee0cd1514437cd9c5ac1e73188027.tar.gz prosody-da8329037d6ee0cd1514437cd9c5ac1e73188027.zip |
Merge 0.11->trunk
-rw-r--r-- | net/server_epoll.lua | 18 | ||||
-rwxr-xr-x | prosodyctl | 2 |
2 files changed, 19 insertions, 1 deletions
diff --git a/net/server_epoll.lua b/net/server_epoll.lua index 610a0fbf..90d3929f 100644 --- a/net/server_epoll.lua +++ b/net/server_epoll.lua @@ -89,6 +89,9 @@ local default_config = { __index = { -- Reuse write buffer tables keep_buffers = true; + + --- How long to wait after getting the shutdown signal before forcefully tearing down every socket + shutdown_deadline = 5; }}; local cfg = default_config.__index; @@ -1004,6 +1007,21 @@ local function setquitting(quit) if quit then quitting = "quitting"; closeall(); + addtimer(1, function () + if quitting then + closeall(); + return 1; + end + end); + if cfg.shutdown_deadline then + addtimer(cfg.shutdown_deadline, function () + if quitting then + for fd, conn in pairs(fds) do -- luacheck: ignore 213/fd + conn:destroy(); + end + end + end); + end else quitting = nil; end @@ -230,7 +230,7 @@ local function service_command_warning(service_command) if prosody.installed and configmanager.get("*", "prosodyctl_service_warnings") ~= false then show_warning("WARNING: Use of prosodyctl start/stop/restart/reload is not recommended"); show_warning(" if Prosody is managed by an init system - use that directly instead."); - lfs = lfs or require + lfs = lfs or require"lfs"; if lfs.attributes("/etc/systemd") then show_warning(" e.g. systemctl %s prosody", service_command); elseif lfs.attributes("/etc/init.d/prosody") then |