Skip to content

Incorrect membership state with leave/rejoin cycles and state_after support #19478

@richvdh

Description

@richvdh
  1. Ensure that homeserver supports MSC4222.
  2. Alice invites Bob and Charlie to a room. Both join.
  3. Charlie switches to another room (this means that Charlie will not immediately load the membership list later)
  4. Charlie reloads EW. (Not sure if this is necessary)
  5. Alice kicks Bob
  6. Alice kicks Charlie
  7. Alice invites Charlie
  8. Alice invites Bob
  9. Bob rejoins
  10. Charlie switches to the room, and observes the "you have been invited" screen. At this point, Charlie's client does an out-of-band membership load, but already has a cached non-OOB leave membership for Bob, so ignores the result.
  11. Charlie rejoins. Due to lazy-loading, Bob's membership state is omitted from the resultant /sync response

Charlie now incorrectly believes that Bob is not in the room, leading to UTDs

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions