- return nil, "cancel", "conflict", "Resource already exists"; -- TODO kick old resource
+ local policy = config_get(session.host, "core", "conflict_resolve");
+ local increment;
+ if policy == "random" then
+ resource = uuid_generate();
+ increment = true;
+ elseif policy == "increment" then
+ increment = true; -- TODO ping old resource
+ 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 {
+ condition = "conflict";
+ text = "Replaced by new connection";
+ };
+ end
+ if increment and sessions[resource] then
+ local count = 1;
+ while sessions[resource.."#"..count] do
+ count = count + 1;
+ end
+ resource = resource.."#"..count;
+ end