diff options
author | Richard van der Hoff <richard@matrix.org> | 2016-07-27 12:18:03 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2016-07-27 12:24:52 +0100 |
commit | d47115ff8bf3ab5952f053db578a519e8e3f930c (patch) | |
tree | 95a66e802a76abef0a9a9563e98b6218c1d09ca8 /synapse/rest | |
parent | Make the device id on e2e key upload optional (diff) | |
download | synapse-d47115ff8bf3ab5952f053db578a519e8e3f930c.tar.xz |
Delete e2e keys on device delete
Diffstat (limited to 'synapse/rest')
-rw-r--r-- | synapse/rest/client/v2_alpha/keys.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/synapse/rest/client/v2_alpha/keys.py b/synapse/rest/client/v2_alpha/keys.py index 0bf32a089b..4629f4bfde 100644 --- a/synapse/rest/client/v2_alpha/keys.py +++ b/synapse/rest/client/v2_alpha/keys.py @@ -86,10 +86,6 @@ class KeyUploadServlet(RestServlet): raise synapse.api.errors.SynapseError( 400, "Can only upload keys for current device" ) - - self.device_handler.check_device_registered( - user_id, device_id, "unknown device" - ) else: device_id = requester.device_id @@ -131,6 +127,15 @@ class KeyUploadServlet(RestServlet): user_id, device_id, time_now, key_list ) + # the device should have been registered already, but it may have been + # deleted due to a race with a DELETE request. Or we may be using an + # old access_token without an associated device_id. Either way, we + # need to double-check the device is registered to avoid ending up with + # keys without a corresponding device. + self.device_handler.check_device_registered( + user_id, device_id, "unknown device" + ) + result = yield self.store.count_e2e_one_time_keys(user_id, device_id) defer.returnValue((200, {"one_time_key_counts": result})) |