diff options
author | devonh <devon.dmytro@gmail.com> | 2022-10-20 15:54:18 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-20 15:54:18 +0000 |
commit | 90414912012b274f49894b2819f5e6e393928da9 (patch) | |
tree | 2f1b4505ab9a93ed7989814258cb57b4393ee1ec | |
parent | b58c9bb094f3a069a4f40bbd6cc4a0ac205afcb6 (diff) |
Mutex protect query keys response (#2812)
-rw-r--r-- | keyserver/internal/internal.go | 8 |
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( |