Changeset

13095:1693bd4de283

core.sessionmanager: Delay closing a replaced connection after replacement Closing the session invokes ondisconnect and session close logic, including mod_smacks hibernation and the timer that destroys the session after a timeout. By closing the connection after it has been detached from the sessions table it will no longer invoke the ondetach handler, which should prevent the above problem.
author Kim Alvefur <zash@zash.se>
date Sun, 07 May 2023 12:27:55 +0200
parents 13094:4002f0aa6a04
children 13096:9638ff8b1c81
files core/sessionmanager.lua plugins/mod_c2s.lua
diffstat 2 files changed, 2 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/core/sessionmanager.lua	Thu May 04 17:30:40 2023 +0200
+++ b/core/sessionmanager.lua	Sun May 07 12:27:55 2023 +0200
@@ -100,8 +100,7 @@
 
 	local replaced_conn = to_session.conn;
 	if replaced_conn then
-		to_session.log("debug", "closing a replaced connection for this session");
-		replaced_conn:close();
+		to_session.conn = nil;
 	end
 
 	to_session.since = from_session.since;
--- a/plugins/mod_c2s.lua	Thu May 04 17:30:40 2023 +0200
+++ b/plugins/mod_c2s.lua	Sun May 07 12:27:55 2023 +0200
@@ -273,6 +273,7 @@
 	local replaced_conn = event.replaced_conn;
 	if replaced_conn then
 		sessions[replaced_conn] = nil;
+		replaced_conn:close();
 	end
 end);