diff options
author | Kegsay <kegan@matrix.org> | 2020-08-04 11:32:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-04 11:32:14 +0100 |
commit | 0c4e8f6d4f0f39d2bd72807675295e4fad70479c (patch) | |
tree | 9560b73d1aa1a62d0bff700523b1ea9586cdb7cf /keyserver/internal | |
parent | fb56bbf0b7d4b21da3f55b066e71d24bf4599887 (diff) |
Send device list updates to servers (outbound only) (#1237)
* Add QueryDeviceMessages to serve up device keys and stream IDs
* Consume key change events in fedsender
Don't yet send them to destinations as we haven't worked them out yet
* Send device list updates to all required servers
* Glue it all together
Diffstat (limited to 'keyserver/internal')
-rw-r--r-- | keyserver/internal/internal.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/keyserver/internal/internal.go b/keyserver/internal/internal.go index 9027cbf4..474f30ff 100644 --- a/keyserver/internal/internal.go +++ b/keyserver/internal/internal.go @@ -179,6 +179,24 @@ func (a *KeyInternalAPI) QueryOneTimeKeys(ctx context.Context, req *api.QueryOne res.Count = *count } +func (a *KeyInternalAPI) QueryDeviceMessages(ctx context.Context, req *api.QueryDeviceMessagesRequest, res *api.QueryDeviceMessagesResponse) { + msgs, err := a.DB.DeviceKeysForUser(ctx, req.UserID, nil) + if err != nil { + res.Error = &api.KeyError{ + Err: fmt.Sprintf("failed to query DB for device keys: %s", err), + } + return + } + maxStreamID := 0 + for _, m := range msgs { + if m.StreamID > maxStreamID { + maxStreamID = m.StreamID + } + } + res.Devices = msgs + res.StreamID = maxStreamID +} + func (a *KeyInternalAPI) QueryKeys(ctx context.Context, req *api.QueryKeysRequest, res *api.QueryKeysResponse) { res.DeviceKeys = make(map[string]map[string]json.RawMessage) res.Failures = make(map[string]interface{}) |