diff options
author | Kim Alvefur <zash@zash.se> | 2022-02-11 21:36:53 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2022-02-11 21:36:53 +0100 |
commit | f56aaf1ba149176fe65254960cba957843c4ca10 (patch) | |
tree | abd9cf32d53f02601866cc7c8be273692deadf98 | |
parent | 89f110bbf20dd54c438ea0bce274860cee75606c (diff) | |
download | prosody-f56aaf1ba149176fe65254960cba957843c4ca10.tar.gz prosody-f56aaf1ba149176fe65254960cba957843c4ca10.zip |
mod_c2s,mod_s2s: Disable and close port listeners before closing sessions
This ensures no new clients can start connecting during shutdown
-rw-r--r-- | .luacheckrc | 1 | ||||
-rw-r--r-- | plugins/mod_c2s.lua | 7 | ||||
-rw-r--r-- | plugins/mod_s2s.lua | 7 |
3 files changed, 15 insertions, 0 deletions
diff --git a/.luacheckrc b/.luacheckrc index e8f7f1a0..0c934d90 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -48,6 +48,7 @@ files["plugins/"] = { "module.saved_state", "module.global", "module.path", + "module.items", -- Module API "module.add_extension", diff --git a/plugins/mod_c2s.lua b/plugins/mod_c2s.lua index c9aae3bc..7c5c4182 100644 --- a/plugins/mod_c2s.lua +++ b/plugins/mod_c2s.lua @@ -423,6 +423,13 @@ end module:hook("c2s-read-timeout", keepalive, -1); module:hook("server-stopping", function(event) + -- Close ports + local pm = require "core.portmanager"; + for _, netservice in pairs(module.items["net-provider"]) do + pm.unregister_service(netservice.name, netservice); + end + + -- Close sessions local reason = event.reason; for _, session in pairs(sessions) do session:close{ condition = "system-shutdown", text = reason }; diff --git a/plugins/mod_s2s.lua b/plugins/mod_s2s.lua index 3710a967..1b40f782 100644 --- a/plugins/mod_s2s.lua +++ b/plugins/mod_s2s.lua @@ -958,6 +958,13 @@ end module:hook("s2s-check-certificate", check_auth_policy, -1); module:hook("server-stopping", function(event) + -- Close ports + local pm = require "core.portmanager"; + for _, netservice in pairs(module.items["net-provider"]) do + pm.unregister_service(netservice.name, netservice); + end + + -- Close sessions local reason = event.reason; for _, session in pairs(sessions) do session:close{ condition = "system-shutdown", text = reason }; |