net.server_epoll: Add a hard deadline on shutdown to extra-fix #1670

Should ensure shutdown even if sockets somehow take a very long to get closed.
This commit is contained in:
Kim Alvefur 2021-09-20 14:38:08 +02:00
parent 6d5ff6d2be
commit 24111569bb

View file

@ -58,6 +58,9 @@ local default_config = { __index = {
-- Maximum and minimum amount of time to sleep waiting for events (adjusted for pending timers)
max_wait = 86400;
min_wait = 1e-06;
--- How long to wait after getting the shutdown signal before forcefully tearing down every socket
shutdown_deadline = 5;
}};
local cfg = default_config.__index;
@ -749,6 +752,15 @@ local function setquitting(quit)
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