Comparison

core/sessionmanager.lua @ 304:7b28fa8bbfe5

Code cleanup for resource binding
author Waqas Hussain <waqas20@gmail.com>
date Sun, 16 Nov 2008 03:16:53 +0500
parent 176:e5cd2a03891d
child 309:d9c8825b7332
comparison
equal deleted inserted replaced
303:89e8f53b870e 304:7b28fa8bbfe5
66 session.type = "c2s"; 66 session.type = "c2s";
67 end 67 end
68 return true; 68 return true;
69 end 69 end
70 70
71 -- returns true, nil on success
72 -- returns nil, err_type, err, err_message on failure
71 function bind_resource(session, resource) 73 function bind_resource(session, resource)
72 if not session.username then return false, "auth"; end 74 if not session.username then return nil, "auth", "not-authorized", "Cannot bind resource before authentication"; end
73 if session.resource then return false, "constraint"; end -- We don't support binding multiple resources 75 if session.resource then return nil, "cancel", "already-bound", "Cannot bind multiple resources on a single connection"; end
76 -- We don't support binding multiple resources
77
74 resource = resource or uuid_generate(); 78 resource = resource or uuid_generate();
75 --FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing 79 --FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing
76 80
77 if not hosts[session.host].sessions[session.username] then 81 if not hosts[session.host].sessions[session.username] then
78 hosts[session.host].sessions[session.username] = { sessions = {} }; 82 hosts[session.host].sessions[session.username] = { sessions = {} };
79 else 83 else
80 if hosts[session.host].sessions[session.username].sessions[resource] then 84 if hosts[session.host].sessions[session.username].sessions[resource] then
81 -- Resource conflict 85 -- Resource conflict
82 return false, "conflict"; -- TODO kick old resource 86 return nil, "cancel", "conflict", "Resource already exists"; -- TODO kick old resource
83 end 87 end
84 end 88 end
85 89
86 session.resource = resource; 90 session.resource = resource;
87 session.full_jid = session.username .. '@' .. session.host .. '/' .. resource; 91 session.full_jid = session.username .. '@' .. session.host .. '/' .. resource;