From 2ba6619152cf554807874bff1bc0f7ed74277f0a Mon Sep 17 00:00:00 2001 From: Javier Peletier Date: Mon, 7 Apr 2025 12:52:21 +0200 Subject: [PATCH] allow quick restart in Linux --- extension/script/common/net.lua | 9 +++++++++ extension/script/common/socket.lua | 12 ++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/extension/script/common/net.lua b/extension/script/common/net.lua index 6c7ccce4..7b06c857 100644 --- a/extension/script/common/net.lua +++ b/extension/script/common/net.lua @@ -176,6 +176,15 @@ function m.listen(protocol, address, port) fs.remove(address) end end + do + -- set SO_REUSEADDR so we can bind again to the same address + -- after a quick restart: + local ok, err = fd:option("reuseaddr", 1) + if not ok then + fd:close() + return nil, err + end + end do local ok, err = fd:bind(address, port) if not ok then diff --git a/extension/script/common/socket.lua b/extension/script/common/socket.lua index 9fb84e51..a30cabc9 100644 --- a/extension/script/common/socket.lua +++ b/extension/script/common/socket.lua @@ -119,12 +119,12 @@ return function (param) session:close() fds[1] = session elseif t.mode == "listen" then - server:close() - fds[1] = server - if session ~= nil then - session:close() - fds[2] = session - end + fds[1] = server + if session ~= nil then + session:close() + fds[2] = session + end + server:close() end local function is_finish() for _, fd in ipairs(fds) do