core/sessionmanager.lua

changeset 2832
8c754c61c72e
parent 2816
59dfb99831ae
child 2857
6036c4b75235
equal deleted inserted replaced
2831:8ee7ec6fc5fc 2832:8c754c61c72e
22 local error = error; 22 local error = error;
23 local uuid_generate = require "util.uuid".generate; 23 local uuid_generate = require "util.uuid".generate;
24 local rm_load_roster = require "core.rostermanager".load_roster; 24 local rm_load_roster = require "core.rostermanager".load_roster;
25 local config_get = require "core.configmanager".get; 25 local config_get = require "core.configmanager".get;
26 local nameprep = require "util.encodings".stringprep.nameprep; 26 local nameprep = require "util.encodings".stringprep.nameprep;
27 local resourceprep = require "util.encodings".stringprep.resourceprep;
27 28
28 local fire_event = require "core.eventmanager".fire_event; 29 local fire_event = require "core.eventmanager".fire_event;
29 local add_task = require "util.timer".add_task; 30 local add_task = require "util.timer".add_task;
30 local gettime = require "socket".gettime; 31 local gettime = require "socket".gettime;
31 32
103 function bind_resource(session, resource) 104 function bind_resource(session, resource)
104 if not session.username then return nil, "auth", "not-authorized", "Cannot bind resource before authentication"; end 105 if not session.username then return nil, "auth", "not-authorized", "Cannot bind resource before authentication"; end
105 if session.resource then return nil, "cancel", "already-bound", "Cannot bind multiple resources on a single connection"; end 106 if session.resource then return nil, "cancel", "already-bound", "Cannot bind multiple resources on a single connection"; end
106 -- We don't support binding multiple resources 107 -- We don't support binding multiple resources
107 108
108 resource = resource or uuid_generate(); 109 resource = resourceprep(resource);
110 resource = resource ~= "" and resource or uuid_generate();
109 --FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing 111 --FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing
110 112
111 if not hosts[session.host].sessions[session.username] then 113 if not hosts[session.host].sessions[session.username] then
112 local sessions = { sessions = {} }; 114 local sessions = { sessions = {} };
113 hosts[session.host].sessions[session.username] = sessions; 115 hosts[session.host].sessions[session.username] = sessions;

mercurial