Merge pull request #2092 from webzwo0i/fix-crash-with-queued-messages

Fix crash with queued messages
pull/2117/head
John McLear 2014-03-26 19:39:19 +00:00
commit 56fd078469
1 changed files with 11 additions and 2 deletions

View File

@ -167,7 +167,8 @@ exports.handleMessage = function(client, message)
{ {
return; return;
} }
if(!sessioninfos[client.id]) { var thisSession = sessioninfos[client.id]
if(!thisSession) {
messageLogger.warn("Dropped message from an unknown connection.") messageLogger.warn("Dropped message from an unknown connection.")
return; return;
} }
@ -196,7 +197,7 @@ exports.handleMessage = function(client, message)
} else if(message.type == "CHANGESET_REQ") { } else if(message.type == "CHANGESET_REQ") {
handleChangesetRequest(client, message); handleChangesetRequest(client, message);
} else if(message.type == "COLLABROOM") { } else if(message.type == "COLLABROOM") {
if (sessioninfos[client.id].readonly) { if (thisSession.readonly) {
messageLogger.warn("Dropped message, COLLABROOM for readonly pad"); messageLogger.warn("Dropped message, COLLABROOM for readonly pad");
} else if (message.data.type == "USER_CHANGES") { } else if (message.data.type == "USER_CHANGES") {
stats.counter('pendingEdits').inc() stats.counter('pendingEdits').inc()
@ -588,6 +589,14 @@ function handleUserChanges(data, cb)
messageLogger.warn("Dropped message, USER_CHANGES Message has no changeset!"); messageLogger.warn("Dropped message, USER_CHANGES Message has no changeset!");
return cb(); return cb();
} }
//TODO: this might happen with other messages too => find one place to copy the session
//and always use the copy. atm a message will be ignored if the session is gone even
//if the session was valid when the message arrived in the first place
if(!sessioninfos[client.id])
{
messageLogger.warn("Dropped message, disconnect happened in the mean time");
return cb();
}
//get all Vars we need //get all Vars we need
var baseRev = message.data.baseRev; var baseRev = message.data.baseRev;