Merge pull request #458 from fourplusone/master

Should fix #417 and #360
pull/462/head
Peter 'Pita' Martischka 2012-02-17 03:21:26 -08:00
commit 0d9754760d
1 changed files with 17 additions and 6 deletions

View File

@ -853,8 +853,19 @@ function handleClientReady(client, message)
//Run trough all sessions of this pad //Run trough all sessions of this pad
async.forEach(pad2sessions[message.padId], function(sessionID, callback) async.forEach(pad2sessions[message.padId], function(sessionID, callback)
{ {
var sessionAuthorName, sessionAuthorColorId; var author, socket, sessionAuthorName, sessionAuthorColorId;
//Since sessioninfos might change while being enumerated, check if the
//sessionID is still assigned to a valid session
if(sessioninfos[sessionID] !== undefined &&
socketio.sockets.sockets[sessionID] !== undefined){
author = sessioninfos[sessionID].author;
socket = socketio.sockets.sockets[sessionID];
}else {
// If the sessionID is not valid, callback();
callback();
return;
}
async.series([ async.series([
//get the authorname & colorId //get the authorname & colorId
function(callback) function(callback)
@ -862,7 +873,7 @@ function handleClientReady(client, message)
async.parallel([ async.parallel([
function(callback) function(callback)
{ {
authorManager.getAuthorColorId(sessioninfos[sessionID].author, function(err, value) authorManager.getAuthorColorId(author, function(err, value)
{ {
if(ERR(err, callback)) return; if(ERR(err, callback)) return;
sessionAuthorColorId = value; sessionAuthorColorId = value;
@ -871,7 +882,7 @@ function handleClientReady(client, message)
}, },
function(callback) function(callback)
{ {
authorManager.getAuthorName(sessioninfos[sessionID].author, function(err, value) authorManager.getAuthorName(author, function(err, value)
{ {
if(ERR(err, callback)) return; if(ERR(err, callback)) return;
sessionAuthorName = value; sessionAuthorName = value;
@ -886,7 +897,7 @@ function handleClientReady(client, message)
if(sessionID != client.id) if(sessionID != client.id)
{ {
//Send this Session the Notification about the new user //Send this Session the Notification about the new user
socketio.sockets.sockets[sessionID].json.send(messageToTheOtherUsers); socket.json.send(messageToTheOtherUsers);
//Send the new User a Notification about this other user //Send the new User a Notification about this other user
var messageToNotifyTheClientAboutTheOthers = { var messageToNotifyTheClientAboutTheOthers = {
@ -898,7 +909,7 @@ function handleClientReady(client, message)
"colorId": sessionAuthorColorId, "colorId": sessionAuthorColorId,
"name": sessionAuthorName, "name": sessionAuthorName,
"userAgent": "Anonymous", "userAgent": "Anonymous",
"userId": sessioninfos[sessionID].author "userId": author
} }
} }
}; };