Comparison

core/sessionmanager.lua @ 3088:a233aa051125

sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
author Waqas Hussain <waqas20@gmail.com>
date Sat, 22 May 2010 05:52:24 +0500
parent 2925:692b3c6c5bd2
child 3089:69fb1cb6b551
comparison
equal deleted inserted replaced
3087:9b31e36528e0 3088:a233aa051125
172 session.resource = resource; 172 session.resource = resource;
173 session.full_jid = session.username .. '@' .. session.host .. '/' .. resource; 173 session.full_jid = session.username .. '@' .. session.host .. '/' .. resource;
174 hosts[session.host].sessions[session.username].sessions[resource] = session; 174 hosts[session.host].sessions[session.username].sessions[resource] = session;
175 full_sessions[session.full_jid] = session; 175 full_sessions[session.full_jid] = session;
176 176
177 session.roster = rm_load_roster(session.username, session.host); 177 local err;
178 session.roster, err = rm_load_roster(session.username, session.host);
179 if err then
180 full_sessions[session.full_jid] = nil;
181 hosts[session.host].sessions[session.username].sessions[resource] = nil;
182 session.full_jid = nil;
183 session.resource = nil;
184 if next(bare_sessions[session.username..'@'..session.host]) == nil then
185 bare_sessions[session.username..'@'..session.host] = nil;
186 hosts[session.host].sessions[session.username] = nil;
187 end
188 return nil, "cancel", "internal-server-error", "Error loading roster";
189 end
178 190
179 hosts[session.host].events.fire_event("resource-bind", {session=session}); 191 hosts[session.host].events.fire_event("resource-bind", {session=session});
180 192
181 return true; 193 return true;
182 end 194 end