diff options
author | Erik Johnston <erik@matrix.org> | 2019-01-30 15:46:27 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2019-01-30 15:46:27 +0000 |
commit | ed8c5e4cda75f120db32c313c7b24bd15659c5e3 (patch) | |
tree | 0d21fc2d527550c28b7bd3c9ff4fc659dd41e62c /synapse | |
parent | Merge pull request #4472 from matrix-org/neilj/room_capabilities (diff) | |
download | synapse-ed8c5e4cda75f120db32c313c7b24bd15659c5e3.tar.xz |
Fix remote invite rejections not comming down sync
This was broken in PR #4405, commit 886e5ac, where we changed remote rejections to be outliers. The fix is to explicitly add the leave event in when we know its an out of band invite. We can't always add the event as if the server is/was in the room there might be more events to send down the sync than just the leave.
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/handlers/sync.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py index f7f768f751..28857bfc1c 100644 --- a/synapse/handlers/sync.py +++ b/synapse/handlers/sync.py @@ -1473,10 +1473,22 @@ class SyncHandler(object): if since_token and since_token.is_after(leave_token): continue + # If this is an out of band message, like a remote invite + # rejection, we include it in the recents batch. Otherwise, we + # let _load_filtered_recents handle fetching the correct + # batches. + # + # This is all screaming out for a refactor, as the logic here is + # subtle and the moving parts numerous. + if leave_event.internal_metadata.is_out_of_band_membership(): + batch_events = [leave_event] + else: + batch_events = None + room_entries.append(RoomSyncResultBuilder( room_id=room_id, rtype="archived", - events=None, + events=batch_events, newly_joined=room_id in newly_joined_rooms, full_state=False, since_token=since_token, |