Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Element-web makes invalid assumptions about room membership changes with lazy-loading #27285

Open
Tracked by #245
richvdh opened this issue Apr 4, 2024 · 1 comment
Labels
A-E2EE A-Lazy-Loading O-Uncommon Most users are unlikely to come across this or unexpected workflow S-Minor Impairs non-critical functionality or suitable workarounds exist T-Defect Z-UISI Unable to decrypt errors

Comments

@richvdh
Copy link
Member

richvdh commented Apr 4, 2024

Consider:

  • Alice joins a room and gets an initial /sync response in that room. Due to lazy-loading, the membership list is incomplete.
  • We decide to load the full membership list (eg, Alice opens the user list, or sends an encrypted message).
  • Alice closes the tab for a while.
  • Bob joins the room and sends a bunch of messages.
  • Alice opens the tab again, and does an incremental /sync; she gets a gappy /sync result.
  • Alice sends an encrypted message.

Now, the problem is that we do not refresh the membership list on the gappy sync result. The spec for lazy-loading is unclear about exactly what assumptions we can make, but it seems that, whilst Synapse disables lazy-loading for incremental syncs, Conduit does not.

I'm filing this here as the net effect is that, when used against Conduit, Element-Web will send undecryptable events. It's to be determined whether this should be considered a bug in Element or Conduit.

@erikjohnston
Copy link
Member

Note that this will be an issue with simplified sliding sync, where we will not all membership updates in incremental sync. We need to hammer down the exact semantics, but it may be something like "we don't send all membership updates for gappy syncs".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-E2EE A-Lazy-Loading O-Uncommon Most users are unlikely to come across this or unexpected workflow S-Minor Impairs non-critical functionality or suitable workarounds exist T-Defect Z-UISI Unable to decrypt errors
Projects
None yet
Development

No branches or pull requests

2 participants