disconnect client if it submits an already accepted changeset based on an old revision

pull/2091/head
webzwo0i 2014-02-20 18:13:30 +01:00
parent ca8dce1840
commit 8245e65d3f
1 changed files with 8 additions and 0 deletions

View File

@ -682,6 +682,14 @@ function handleUserChanges(data, cb)
// and can be applied after "c".
try
{
// a changeset can be based on an old revision with the same changes in it
// prevent eplite from accepting it TODO: better send the client a NEW_CHANGES
// of that revision
if(baseRev+1 == r && c == changeset) {
client.json.send({disconnect:"badChangeset"});
stats.meter('failedChangesets').mark();
return callback(new Error("Won't apply USER_CHANGES, because it contains an already accepted changeset"));
}
changeset = Changeset.follow(c, changeset, false, apool);
}catch(e){
client.json.send({disconnect:"badChangeset"});