diff options
author | Sean Quah <8349537+squahtx@users.noreply.github.com> | 2022-09-23 13:44:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-23 13:44:03 +0100 |
commit | 03c2bfb7f89d637930da52723161ce74d4f89233 (patch) | |
tree | 3195d65aaa92841b5b179f4fb2214a58cf3b3d70 /synapse/handlers/device.py | |
parent | Faster Remote Room Joins: tell remote homeservers that we are unable to autho... (diff) | |
download | synapse-03c2bfb7f89d637930da52723161ce74d4f89233.tar.xz |
Send device list updates out to servers in partially joined rooms (#13874)
Use the provided list of servers in the room from the `/send_join` response, since we will not know which users are in the room. This isn't sufficient to ensure that all remote servers receive the right device list updates, since the `/send_join` response may be inaccurate or we may calculate the membership state of new users in the room incorrectly. Signed-off-by: Sean Quah <seanq@matrix.org>
Diffstat (limited to 'synapse/handlers/device.py')
-rw-r--r-- | synapse/handlers/device.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py index 901e2310b7..6566b3bf3d 100644 --- a/synapse/handlers/device.py +++ b/synapse/handlers/device.py @@ -688,11 +688,15 @@ class DeviceHandler(DeviceWorkerHandler): # Ignore any users that aren't ours if self.hs.is_mine_id(user_id): hosts = set( - await self._storage_controllers.state.get_current_hosts_in_room( + await self._storage_controllers.state.get_current_hosts_in_room_or_partial_state_approximation( room_id ) ) hosts.discard(self.server_name) + # For rooms with partial state, `hosts` is merely an + # approximation. When we transition to a full state room, we + # will have to send out device list updates to any servers we + # missed. # Check if we've already sent this update to some hosts if current_stream_id == stream_id: |