mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-09-16 18:24:36 -04:00
Fix bug in device list caching when remote users leave rooms (#13749)
When a remote user leaves the last room shared with the homeserver, we have to mark their device list as unsubscribed, otherwise we would hold on to a stale device list in our cache. Crucially, the device list would remain cached even after the remote user rejoined the room, which could lead to E2EE failures until the next change to the remote user's device list. Fixes #13651. Signed-off-by: Sean Quah <seanq@matrix.org>
This commit is contained in:
parent
21687ec189
commit
c73774467e
5 changed files with 51 additions and 15 deletions
|
@ -891,6 +891,12 @@ class E2eKeysHandlerTestCase(unittest.HomeserverTestCase):
|
|||
new_callable=mock.MagicMock,
|
||||
return_value=make_awaitable(["some_room_id"]),
|
||||
)
|
||||
mock_get_users = mock.patch.object(
|
||||
self.store,
|
||||
"get_users_server_still_shares_room_with",
|
||||
new_callable=mock.MagicMock,
|
||||
return_value=make_awaitable({remote_user_id}),
|
||||
)
|
||||
mock_request = mock.patch.object(
|
||||
self.hs.get_federation_client(),
|
||||
"query_user_devices",
|
||||
|
@ -898,7 +904,7 @@ class E2eKeysHandlerTestCase(unittest.HomeserverTestCase):
|
|||
return_value=make_awaitable(response_body),
|
||||
)
|
||||
|
||||
with mock_get_rooms, mock_request as mocked_federation_request:
|
||||
with mock_get_rooms, mock_get_users, mock_request as mocked_federation_request:
|
||||
# Make the first query and sanity check it succeeds.
|
||||
response_1 = self.get_success(
|
||||
e2e_handler.query_devices(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue