Commit Graph

3187 Commits (78820b857270d7efbda1b239d95080365b3ffc8b)

Author SHA1 Message Date
John McLear 9f2bab2ba3 Merge pull request #1760 from bemeric1/develop
Issue #1652: Fix to client-side-induced changeset spamming.
2013-04-28 13:11:34 -07:00
Siebrand Mazeland 702a300164 Localisation updates from http://translatewiki.net. 2013-04-28 17:48:19 +00:00
Marcel Klehr 2c855de6f6 Add a server-side changeset queue per pad
fixes #1573
2013-04-27 23:04:42 +02:00
Brian Emerick e7d8f124ad Issue #1625: Fix to client-side-induced changeset spamming.
THE BUG - HIGH LEVEL:
- When client A sends out an attribute change, client B applies that change to itself but
  also thinks that it made the change itself, which is incorrect. This means that when client B
  next makes a change, he will send out that he made the attrib change that A actually made.
- Ex: Have 2 clients on the same pad. Have A apply bold on some text. Next, have B type a character.
  B will broadcast that it both added a character AND applied bold, when in reality it did NOT
  apply bold at all, that change was done by the other client and this client incorrectly adopted it as its own.
- This root bug behavior results in clients continuing to think that they each made the other client's change,
  thus resulting in an infinite loop of changeset spamming that bogs down clients and harms server stability.

THE BUG - IN DEPTH:
- The root issue is in the way that Changesets are combined in Changeset.follow(). Specifically, in the case of a
  changeset with ONLY new attrib changes (no text changes) being merged with an identity changeset (has no ops).
- In this case, Changeset.follow() copies the ops of the new CS and fully overrides the other CS.
- applyChangesToBase invokes Changeset.follow to determine the final client document CS state after applying the new CS.
  If the final client document CS state is NOT the identity CS, then the client broadcasts that it made a change.
- When client A changes just attribs, client B's applyChangesToBase calls Changeset.follow() and passes client A's
  changeset (attrib change) and Client B's current changeset state (identity).
- As per the noted bug, Changeset.follow() returns client A's changeset as a result, causing client B to adopt
  client A's changeset as its own document state. Thus, client A ends up thinking it has made client B's changes.

THE FIX:
- Changeset.follow() should NOT copy the ops of the new CS passed in if those changes are only attrib changes.
  This allows applyChangesToBase to properly set the client's CS back to the identity after applying an
  external attrib change, instead of incorrectly adopting the external client's changes.
2013-04-24 15:18:25 -07:00
Siebrand Mazeland f0f98b41fe Localisation updates from http://translatewiki.net. 2013-04-21 12:29:25 +00:00
John McLear acd2e9ff68 Merge pull request #1754 from goldquest/patch-1
Just a missing character in README
2013-04-18 04:34:03 -07:00
Timo Welde b527c6ead2 Just a missing character 2013-04-18 12:54:09 +03:00
John McLear bf4c86ed94 better message for admins 2013-04-17 23:48:11 +01:00
John McLear 63b00b9010 Merge branch 'feature/add-cs-queue' of github.com:ether/etherpad-lite into dont-crash-noauth 2013-04-17 20:04:25 +01:00
John McLear 3b8621c6a0 dont crash on no auth, ust a bandaid 2013-04-17 19:50:05 +01:00
goldquest 98c43aff43 fixed spacing 2013-04-17 18:17:14 +02:00
John McLear f478f99995 Merge pull request #1750 from ether/fix/authorship-once-and-4-all
Fix authorship sanitization
2013-04-17 08:13:22 -07:00
goldquest 896f72311f use document, not doc 2013-04-17 16:51:54 +02:00
goldquest 566034ddf0 IE8 don't knows the Array.forEach function (simple version fix) 2013-04-17 16:51:43 +02:00
goldquest b08a6e522f IE8 complains, if catch block is missing 2013-04-17 16:51:21 +02:00
Marcel Klehr 146c75e703 Remove console.log in content collector
fixes #1731
2013-04-17 16:37:45 +03:00
Marcel Klehr 560fd55bf2 Fix authorship sanitization
author colors wouldn't get disttributed, if their id was greater than 9
(due to apool encoding them to base 36)
2013-04-17 15:24:40 +02:00
Marcel Klehr cd288c70cb Don't block changeset queue with delivering changeset 2013-04-17 14:26:11 +02:00
Marcel Klehr 1c8b7a3661 Add a server-side changeset queue per pad
fixes #1573
2013-04-17 14:25:23 +02:00
John McLear a3ed936d5f Merge branch 'develop' of github.com:ether/etherpad-lite into develop 2013-04-16 00:12:57 +01:00
John McLear e7a80b7b77 still express is stuck at 3.1.0 2013-04-16 00:12:11 +01:00
John McLear 2e0c8dbc4f Merge pull request #1745 from ether/master
Pull tags
2013-04-15 16:05:03 -07:00
John McLear c19b7b8f55 Merge pull request #1743 from ether/dont-crash-on-export-abiword
catch error on export
2013-04-15 15:32:14 -07:00
John McLear f987299a5d catch error on export 2013-04-15 23:01:08 +01:00
Marcel Klehr 76e50e2c4d Refactor SocketIORouter 2013-04-15 20:29:06 +02:00
John McLear fac4058e83 Merge pull request #1739 from ether/update-connect
Update connect and express
2013-04-15 11:09:34 -07:00
John McLear 9b952da692 Merge branch 'develop' of github.com:ether/etherpad-lite into update-connect 2013-04-15 19:07:01 +01:00
John McLear 9a863824c9 update connect and express 2013-04-15 19:06:22 +01:00
John McLear 0b2e1a0c31 Update .travis.yml 2013-04-15 17:33:41 +02:00
John McLear a670158e78 Update .travis.yml 2013-04-15 17:33:20 +02:00
John McLear c5a58d392c Merge pull request #1737 from ether/develop
Patch allow spam to be sent :|
2013-04-15 06:38:42 -07:00
John McLear 9b7dca5427 Merge pull request #1736 from ether/dont-avoid-spam
undo avoid changeset spam as it breaks functionality
2013-04-15 06:37:49 -07:00
John McLear 4989f56673 undo avoid changeset spam as it breaks functionality 2013-04-15 14:36:25 +01:00
John McLear 2872a824de Merge branch 'release/1.2.10' 2013-04-15 12:24:44 +01:00
John McLear 2c8699506d push express back as it breaks sessions 2013-04-15 12:21:10 +01:00
John McLear c3c7a3d128 Merge pull request #1721 from ether/dont-send-same-cs-spam
temp patch for #1652
2013-04-15 04:20:05 -07:00
Siebrand Mazeland 8a2977381f Localisation updates from http://translatewiki.net. 2013-04-14 11:54:26 +00:00
John McLear 08b54ef61b Merge pull request #1732 from ether/authorID-2
Correct authorID in Changeset on modification
2013-04-12 06:36:39 -07:00
John McLear 337179fddd remove console logs and cruft 2013-04-12 14:34:07 +01:00
Marcel Klehr f4de7f6a90 Use a string instead of an array! 2013-04-11 21:23:38 +02:00
Marcel Klehr 49013b18c7 We need to replace all new author attribs with thisSession.author, in case someone copy/pasted or otherwise inserted other peoples changes 2013-04-11 21:12:59 +02:00
John McLear b137f301e2 MAGIQ 2013-04-11 18:34:40 +01:00
Marcel Klehr e8d953a15c Use the correct version number 2013-04-11 19:08:07 +03:00
John McLear f9d23767f8 Merge pull request #1709 from ether/keep-list-order-on-paste
When you paste into a numbered list, keep some integrity
2013-04-11 09:07:22 -07:00
John McLear a81a40d75b Merge branch 'develop' of github.com:ether/etherpad-lite into develop 2013-04-11 17:05:24 +01:00
John McLear f4123d2904 bump v and readme 2013-04-11 17:04:54 +01:00
John McLear dc6e2e13fe Merge pull request #1723 from ether/expose-broadcastslider
expose broadcast slider so plugins can interact with it
2013-04-11 09:03:43 -07:00
Marcel Klehr 594757cc47 html10n.js: Don't break in getDirection if language hasn't been set
fixes #1724
2013-04-11 18:51:49 +03:00
John McLear 9581097dc7 remove cruft 2013-04-11 16:39:25 +01:00
John McLear 1fc906017c final css 2013-04-11 16:38:41 +01:00