diff options
author | Richard van der Hoff <richard@matrix.org> | 2016-08-03 11:48:32 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2016-08-03 15:41:44 +0100 |
commit | 91fa69e0299167dad4df9831b8d175a99564b266 (patch) | |
tree | dd0070e0880562b2627cb132816b619663cc86e7 /synapse/handlers/e2e_keys.py | |
parent | Merge branch 'rav/null_default_device_displayname' into develop (diff) | |
download | synapse-91fa69e0299167dad4df9831b8d175a99564b266.tar.xz |
keys/query: return all users which were asked for
In the situation where all of a user's devices get deleted, we want to indicate this to a client, so we want to return an empty dictionary, rather than nothing at all.
Diffstat (limited to 'synapse/handlers/e2e_keys.py')
-rw-r--r-- | synapse/handlers/e2e_keys.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/synapse/handlers/e2e_keys.py b/synapse/handlers/e2e_keys.py index 1312cdf5ab..950fc927b1 100644 --- a/synapse/handlers/e2e_keys.py +++ b/synapse/handlers/e2e_keys.py @@ -99,6 +99,7 @@ class E2eKeysHandler(object): """ local_query = [] + result_dict = {} for user_id, device_ids in query.items(): if not self.is_mine_id(user_id): logger.warning("Request for keys for non-local user %s", @@ -111,15 +112,17 @@ class E2eKeysHandler(object): for device_id in device_ids: local_query.append((user_id, device_id)) + # make sure that each queried user appears in the result dict + result_dict[user_id] = {} + results = yield self.store.get_e2e_device_keys(local_query) # un-jsonify the results - json_result = collections.defaultdict(dict) for user_id, device_keys in results.items(): for device_id, json_bytes in device_keys.items(): - json_result[user_id][device_id] = json.loads(json_bytes) + result_dict[user_id][device_id] = json.loads(json_bytes) - defer.returnValue(json_result) + defer.returnValue(result_dict) @defer.inlineCallbacks def on_federation_query_client_keys(self, query_body): |