Diff

core/sessionmanager.lua @ 791:a4be1d80775c

Fixed: kick_old resource conflict resolution policy could fail with a backtrace
author Waqas Hussain <waqas20@gmail.com>
date Thu, 12 Feb 2009 18:23:00 +0500
parent 760:90ce865eebd8
child 896:2c0b9e3c11c3
line wrap: on
line diff
--- a/core/sessionmanager.lua	Thu Feb 12 18:09:17 2009 +0500
+++ b/core/sessionmanager.lua	Thu Feb 12 18:23:00 2009 +0500
@@ -126,10 +126,13 @@
 			elseif policy == "kick_new" then
 				return nil, "cancel", "conflict", "Resource already exists";
 			else -- if policy == "kick_old" then
-				hosts[session.host].sessions[session.username].sessions[resource]:close {
+				sessions[resource]:close {
 					condition = "conflict";
 					text = "Replaced by new connection";
 				};
+				if not next(sessions) then
+					hosts[session.host].sessions[session.username] = { sessions = sessions };
+				end
 			end
 			if increment and sessions[resource] then
 				local count = 1;