summaryrefslogtreecommitdiff
path: root/src/node/handler/PadMessageHandler.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/node/handler/PadMessageHandler.js')
-rw-r--r--src/node/handler/PadMessageHandler.js13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js
index 3582c9bd..26eb17a6 100644
--- a/src/node/handler/PadMessageHandler.js
+++ b/src/node/handler/PadMessageHandler.js
@@ -167,7 +167,8 @@ exports.handleMessage = function(client, message)
{
return;
}
- if(!sessioninfos[client.id]) {
+ var thisSession = sessioninfos[client.id]
+ if(!thisSession) {
messageLogger.warn("Dropped message from an unknown connection.")
return;
}
@@ -196,7 +197,7 @@ exports.handleMessage = function(client, message)
} else if(message.type == "CHANGESET_REQ") {
handleChangesetRequest(client, message);
} else if(message.type == "COLLABROOM") {
- if (sessioninfos[client.id].readonly) {
+ if (thisSession.readonly) {
messageLogger.warn("Dropped message, COLLABROOM for readonly pad");
} else if (message.data.type == "USER_CHANGES") {
stats.counter('pendingEdits').inc()
@@ -588,6 +589,14 @@ function handleUserChanges(data, cb)
messageLogger.warn("Dropped message, USER_CHANGES Message has no changeset!");
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
var baseRev = message.data.baseRev;