mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-04 15:37:49 +00:00
A sender removed before anything was announced gets the synthetic join, then the room is left out of their lists until the first announcement. It was dropped from the rooms checked for updates outside the lists, so the connection kept it as sent up to its last token: when the announcement listed it again, only that announcement went down and any change made in between, such as a new room name, was lost. The rooms left out are now kept among the rooms checked for updates, without being listed. A change while they are left out marks them as only partly sent, and they come back with everything since. This reuses the existing tracking of rooms outside the list ranges, instead of resending the room from scratch when it is listed again, which would need its own bookkeeping.