aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2012-12-28 14:33:47 +0100
committerKim Alvefur <zash@zash.se>2012-12-28 14:33:47 +0100
commit3e2a8fbe1c48e2387ab544da454132cf7c8d5d2c (patch)
tree44b919ba59445e4f92b30ff080456c7eda4e59ad
parentde47f7e8361773e32f8278c6ae305e1a08636285 (diff)
downloadprosody-3e2a8fbe1c48e2387ab544da454132cf7c8d5d2c.tar.gz
prosody-3e2a8fbe1c48e2387ab544da454132cf7c8d5d2c.zip
prosody, mod_c2s, mod_s2s: Move closing of c2s and s2s sessions to respective plugins
-rw-r--r--plugins/mod_c2s.lua9
-rw-r--r--plugins/mod_s2s/mod_s2s.lua9
-rwxr-xr-xprosody37
3 files changed, 18 insertions, 37 deletions
diff --git a/plugins/mod_c2s.lua b/plugins/mod_c2s.lua
index 72085113..89d678ca 100644
--- a/plugins/mod_c2s.lua
+++ b/plugins/mod_c2s.lua
@@ -265,6 +265,15 @@ function listener.associate_session(conn, session)
sessions[conn] = session;
end
+module:hook("server-stopping", function(event)
+ local reason = event.reason;
+ for _, session in pairs(sessions) do
+ session:close{ condition = "system-shutdown", text = reason };
+ end
+end, 1000);
+
+
+
module:provides("net", {
name = "c2s";
listener = listener;
diff --git a/plugins/mod_s2s/mod_s2s.lua b/plugins/mod_s2s/mod_s2s.lua
index 788a64af..ad628a9b 100644
--- a/plugins/mod_s2s/mod_s2s.lua
+++ b/plugins/mod_s2s/mod_s2s.lua
@@ -506,6 +506,15 @@ end
s2sout.set_listener(listener);
+module:hook("server-stopping", function(event)
+ local reason = event.reason;
+ for _, session in pairs(sessions) do
+ session:close{ condition = "system-shutdown", text = reason };
+ end
+end,500);
+
+
+
module:provides("net", {
name = "s2s";
listener = listener;
diff --git a/prosody b/prosody
index c1606874..da77719d 100755
--- a/prosody
+++ b/prosody
@@ -374,43 +374,6 @@ end
function cleanup()
log("info", "Shutdown status: Cleaning up");
prosody.events.fire_event("server-cleanup");
-
- -- Ok, we're quitting I know, but we
- -- need to do some tidying before we go :)
- server.setquitting(false);
-
- log("info", "Shutdown status: Closing all active sessions");
- for hostname, host in pairs(hosts) do
- log("debug", "Shutdown status: Closing client connections for %s", hostname)
- if host.sessions then
- local reason = { condition = "system-shutdown", text = "Server is shutting down" };
- if prosody.shutdown_reason then
- reason.text = reason.text..": "..prosody.shutdown_reason;
- end
- for username, user in pairs(host.sessions) do
- for resource, session in pairs(user.sessions) do
- log("debug", "Closing connection for %s@%s/%s", username, hostname, resource);
- session:close(reason);
- end
- end
- end
-
- log("debug", "Shutdown status: Closing outgoing s2s connections from %s", hostname);
- if host.s2sout then
- for remotehost, session in pairs(host.s2sout) do
- if session.close then
- session:close("system-shutdown");
- else
- log("warn", "Unable to close outgoing s2s session to %s, no session:close()?!", remotehost);
- end
- end
- end
- end
-
- log("info", "Shutdown status: Closing all server connections");
- server.closeall();
-
- server.setquitting(true);
end
-- Are you ready? :)