Mercurial > prosody-modules
view mod_graceful_shutdown/mod_graceful_shutdown.lua @ 3498:69219097aa85
muc_notifications: notify non-present members of new messages
This module, in the event of a new message in a Group Chat, will
generate a notification for each of those members not present at that
time in the Group Chat
author | marc0s <marcos.devera@quobis.com> |
---|---|
date | Fri, 29 Mar 2019 17:03:05 +0100 |
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);