Mercurial > prosody-modules
view mod_graceful_shutdown/mod_graceful_shutdown.lua @ 4409:44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Only the username was being used, and the host of the requester ignored.
Luckily this only affects admins of the host. If they want to create an
account they can use the other command. If they want to create a contact
they should request from their account on this host.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 28 Jan 2021 07:04:11 +0000 |
parents | 4652a112a4ba |
children | 8dbaa5e753f3 |
line wrap: on
line source
-- luacheck: ignore 122/prosody 113/prosody local timer = require "util.timer"; local portman = require "core.portmanager"; local server = require "net.server"; module:set_global(); local orig_shutdown = prosody.shutdown; local pause = module:get_option_number("shutdown_pause", 1); function module.unload() prosody.shutdown = orig_shutdown; end prosody.shutdown = coroutine.wrap(function (reason, code) prosody.shutdown_reason = reason; prosody.shutdown_code = code; timer.add_task(pause, prosody.shutdown); coroutine.yield(true, "shutdown initiated"); -- Close c2s ports, stop accepting new connections portman.deactivate("c2s"); -- Close all c2s sessions for _, sess in pairs(prosody.full_sessions) do sess:close{ condition = "system-shutdown", text = reason } end -- Wait for notifications to be sent coroutine.yield(pause); -- Event for everything else to shut down prosody.events.fire_event("server-stopping", { reason = reason; code = code; }); -- And wait coroutine.yield(pause); -- And stop main event loop server.setquitting(true); -- And wait for death coroutine.yield(pause * 3); -- you came back? die zombie! os.exit(1); end);