From 6689a3c02e8c25ef30832f27b6647627f3f97d12 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Thu, 10 Oct 2013 16:38:41 +0200 Subject: Catch errors during preparation of client vars ... and disconnect the user --- src/node/handler/PadMessageHandler.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src') 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 -- cgit v1.2.3