summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2020-01-29 09:56:41 +0000
committerGitHub <noreply@github.com>2020-01-29 09:56:41 +0000
commit2cad8baa7030a86efc103599d79412741654dc15 (patch)
treee13d4359a193c23c4a44d7ebab365d1bc6306178
parentFix outbound federation request metrics (#6795) (diff)
downloadsynapse-2cad8baa7030a86efc103599d79412741654dc15.tar.xz
Fix bug when querying remote user keys that require a resync. (#6796)
We ended up only returning a single device, rather than all of them.
-rw-r--r--changelog.d/6796.bugfix1
-rw-r--r--synapse/handlers/e2e_keys.py3
2 files changed, 3 insertions, 1 deletions
diff --git a/changelog.d/6796.bugfix b/changelog.d/6796.bugfix
new file mode 100644
index 0000000000..206a157311
--- /dev/null
+++ b/changelog.d/6796.bugfix
@@ -0,0 +1 @@
+Fix bug where querying a remote user's device keys that weren't cached resulted in only returning a single device.
diff --git a/synapse/handlers/e2e_keys.py b/synapse/handlers/e2e_keys.py
index 2d889364d4..95a9d71f41 100644
--- a/synapse/handlers/e2e_keys.py
+++ b/synapse/handlers/e2e_keys.py
@@ -208,8 +208,9 @@ class E2eKeysHandler(object):
                         )
 
                     user_devices = user_devices["devices"]
+                    user_results = results.setdefault(user_id, {})
                     for device in user_devices:
-                        results[user_id] = {device["device_id"]: device["keys"]}
+                        user_results[device["device_id"]] = device["keys"]
                     user_ids_updated.append(user_id)
                 except Exception as e:
                     failures[destination] = _exception_to_failure(e)