From 461ed413b735a641d0bbb248841411d25045caa7 Mon Sep 17 00:00:00 2001 From: anugu-chegg Date: Fri, 16 Feb 2018 01:31:47 +0530 Subject: [PATCH] Fix few mistakes --- src/node/handler/PadMessageHandler.js | 6 +-- src/static/js/collab_client.js | 55 +++++++++++++++++---------- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index 5e39bdb5..63349f14 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -1226,8 +1226,8 @@ function handleClientReady(client, message) var forWire = Changeset.prepareForWire(changesets[r], pad.pool); var wireMsg = {"type":"COLLABROOM", "data":{type:"CLIENT_RECONNECT", - currRev: r, - newRev:pad.getHeadRevisionNumber(), + headRev:pad.getHeadRevisionNumber(), + newRev:r, changeset:forWire.translated, apool: forWire.pool, author: changesetsAuthor[r], @@ -1243,8 +1243,6 @@ function handleClientReady(client, message) noChanges: true, newRev:pad.getHeadRevisionNumber() }}; - - console.log("About to send client reconnect event"); client.json.send(Msg); } }); diff --git a/src/static/js/collab_client.js b/src/static/js/collab_client.js index 825803f1..e2f1240a 100644 --- a/src/static/js/collab_client.js +++ b/src/static/js/collab_client.js @@ -349,38 +349,53 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) return; } - var currRev = msg.currRev; + var headRev = msg.headRev; var newRev = msg.newRev; var changeset = msg.changeset; var author = (msg.author || ''); var apool = msg.apool; - if (rev + 1 == currRev) + if (msgQueue.length > 0) { - if (author == pad.getUserId()) + if (newRev != (msgQueue[msgQueue.length - 1].newRev + 1)) { - editor.applyPreparedChangesetToBase(); - setStateIdle(); - callCatchingErrors("onInternalAction", function() - { - callbacks.onInternalAction("commitAcceptedByServer"); - }); - callCatchingErrors("onConnectionTrouble", function() - { - callbacks.onConnectionTrouble("OK"); - }); - handleUserChanges(); - } - else - { - editor.applyChangesToBase(changeset, author, apool); + window.console.warn("bad message revision on ACCEPT_COMMIT: " + newRev + " not " + (msgQueue[msgQueue.length - 1][0] + 1)); + // setChannelState("DISCONNECTED", "badmessage_acceptcommit"); + return; } + msg.type = "NEW_CHANGES"; + msgQueue.push(msg); + return; } - if (rev + 1 < currRev) + + if (newRev != (rev + 1)) + { + window.console.warn("bad message revision on ACCEPT_COMMIT: " + newRev + " not " + (rev + 1)); + // setChannelState("DISCONNECTED", "badmessage_acceptcommit"); + return; + } + + rev = newRev; + if (author == pad.getUserId()) + { + editor.applyPreparedChangesetToBase(); + setStateIdle(); + callCatchingErrors("onInternalAction", function() + { + callbacks.onInternalAction("commitAcceptedByServer"); + }); + callCatchingErrors("onConnectionTrouble", function() + { + callbacks.onConnectionTrouble("OK"); + }); + handleUserChanges(); + } + else { editor.applyChangesToBase(changeset, author, apool); } - if (currRev == newRev) + + if (newRev == headRev) { rev = newRev; socketIOError = false;