Merge 0.11->trunk
authorKim Alvefur <zash@zash.se>
Mon, 20 Sep 2021 15:51:43 +0200
changeset 11816 42e98179c034
parent 11812 c24580a214f3 (current diff)
parent 11815 ae43166fe931 (diff)
child 11817 790bffbb9047
Merge 0.11->trunk
net/server_epoll.lua
prosodyctl
--- a/net/server_epoll.lua	Sun Sep 19 16:28:16 2021 +0200
+++ b/net/server_epoll.lua	Mon Sep 20 15:51:43 2021 +0200
@@ -89,6 +89,9 @@
 
 	-- 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 @@
 	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
--- a/prosodyctl	Sun Sep 19 16:28:16 2021 +0200
+++ b/prosodyctl	Mon Sep 20 15:51:43 2021 +0200
@@ -230,7 +230,7 @@
 	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