Changeset

5281:815c689f85ad

prosody, mod_c2s, mod_s2s: Move closing of c2s and s2s sessions to respective plugins
author Kim Alvefur <zash@zash.se>
date Fri, 28 Dec 2012 14:33:47 +0100
parents 5280:1514a6147e85
children 5282:4cd57cb49f99
files plugins/mod_c2s.lua plugins/mod_s2s/mod_s2s.lua prosody
diffstat 3 files changed, 18 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_c2s.lua	Fri Dec 28 14:33:27 2012 +0100
+++ b/plugins/mod_c2s.lua	Fri Dec 28 14:33:47 2012 +0100
@@ -265,6 +265,15 @@
 	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;
--- a/plugins/mod_s2s/mod_s2s.lua	Fri Dec 28 14:33:27 2012 +0100
+++ b/plugins/mod_s2s/mod_s2s.lua	Fri Dec 28 14:33:47 2012 +0100
@@ -506,6 +506,15 @@
 
 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;
--- a/prosody	Fri Dec 28 14:33:27 2012 +0100
+++ b/prosody	Fri Dec 28 14:33:47 2012 +0100
@@ -374,43 +374,6 @@
 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? :)