+ full_sessions[session.full_jid] = session;
+
+ local err;
+ session.roster, err = rm_load_roster(session.username, session.host);
+ if err then
+ full_sessions[session.full_jid] = nil;
+ hosts[session.host].sessions[session.username].sessions[resource] = nil;
+ session.full_jid = nil;
+ session.resource = nil;
+ if next(bare_sessions[session.username..'@'..session.host].sessions) == nil then
+ bare_sessions[session.username..'@'..session.host] = nil;
+ hosts[session.host].sessions[session.username] = nil;
+ end
+ session.log("error", "Roster loading failed: %s", err);
+ return nil, "cancel", "internal-server-error", "Error loading roster";
+ end
+
+ hosts[session.host].events.fire_event("resource-bind", {session=session});
+