aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordevonh <devon.dmytro@gmail.com>2022-10-20 15:54:18 +0000
committerGitHub <noreply@github.com>2022-10-20 15:54:18 +0000
commit90414912012b274f49894b2819f5e6e393928da9 (patch)
tree2f1b4505ab9a93ed7989814258cb57b4393ee1ec
parentb58c9bb094f3a069a4f40bbd6cc4a0ac205afcb6 (diff)
Mutex protect query keys response (#2812)
-rw-r--r--keyserver/internal/internal.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/keyserver/internal/internal.go b/keyserver/internal/internal.go
index 89621aa8..49ef0305 100644
--- a/keyserver/internal/internal.go
+++ b/keyserver/internal/internal.go
@@ -472,7 +472,9 @@ func (a *KeyInternalAPI) queryRemoteKeys(
close(resultCh)
}()
- for result := range resultCh {
+ processResult := func(result *gomatrixserverlib.RespQueryKeys) {
+ respMu.Lock()
+ defer respMu.Unlock()
for userID, nest := range result.DeviceKeys {
res.DeviceKeys[userID] = make(map[string]json.RawMessage)
for deviceID, deviceKey := range nest {
@@ -495,6 +497,10 @@ func (a *KeyInternalAPI) queryRemoteKeys(
// TODO: do we want to persist these somewhere now
// that we have fetched them?
}
+
+ for result := range resultCh {
+ processResult(result)
+ }
}
func (a *KeyInternalAPI) queryRemoteKeysOnServer(