summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Klehr <mklehr@gmx.net>2013-10-10 16:38:41 +0200
committerMarcel Klehr <mklehr@gmx.net>2013-10-10 16:38:41 +0200
commit6689a3c02e8c25ef30832f27b6647627f3f97d12 (patch)
tree8361056c7a12153292dfa6399ce637c009170500
parentccf4683558928925ec2f637be05916e8f1a2e91e (diff)
downloadetherpad-lite-6689a3c02e8c25ef30832f27b6647627f3f97d12.zip
Catch errors during preparation of client vars
... and disconnect the user
-rw-r--r--src/node/handler/PadMessageHandler.js16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js
index 4adf6002..0bdc402f 100644
--- a/src/node/handler/PadMessageHandler.js
+++ b/src/node/handler/PadMessageHandler.js
@@ -1006,11 +1006,17 @@ function handleClientReady(client, message)
//This is a normal first connect
else
{
- //prepare all values for the wire
- var atext = Changeset.cloneAText(pad.atext);
- var attribsForWire = Changeset.prepareForWire(atext.attribs, pad.pool);
- var apool = attribsForWire.pool.toJsonable();
- atext.attribs = attribsForWire.translated;
+ //prepare all values for the wire, there'S a chance that this throws, if the pad is corrupted
+ try {
+ var atext = Changeset.cloneAText(pad.atext);
+ var attribsForWire = Changeset.prepareForWire(atext.attribs, pad.pool);
+ var apool = attribsForWire.pool.toJsonable();
+ atext.attribs = attribsForWire.translated;
+ }catch(e) {
+ console.error(e.stack || e)
+ client.json.send({disconnect:"padCorrupted"});// pull the breaks
+ return callback();
+ }
// Warning: never ever send padIds.padId to the client. If the
// client is read only you would open a security hole 1 swedish