This commit is contained in:
Till Faelligen 2022-09-19 10:41:14 +02:00
parent 2a7fe70605
commit 98114251e3
No known key found for this signature in database
GPG key ID: 3DF82D8AB9211D4E
3 changed files with 6 additions and 9 deletions

View file

@ -340,5 +340,6 @@ type QuerySignaturesResponse struct {
type PerformMarkAsStaleRequest struct {
UserID string
Domain gomatrixserverlib.ServerName
DeviceID string
}

View file

@ -233,11 +233,7 @@ func (a *KeyInternalAPI) PerformMarkAsStaleIfNeeded(ctx context.Context, req *ap
return err
}
if len(knownDevices) == 0 {
_, remoteServer, err := gomatrixserverlib.SplitID('@', req.UserID)
if err != nil {
return err
}
return a.Updater.ManualUpdate(ctx, remoteServer, req.UserID)
return a.Updater.ManualUpdate(ctx, req.Domain, req.UserID)
}
return nil
}

View file

@ -109,14 +109,14 @@ func (s *OutputSendToDeviceEventConsumer) onMessage(ctx context.Context, msgs []
})
logger.Debugf("sync API received send-to-device event from the clientapi/federationsender")
// Check we actually got the requesting device in our store
// Check we actually got the requesting device in our store, if we receive a room key request
if output.Type == "m.room_key_request" {
requestingDeviceID := gjson.GetBytes(output.SendToDeviceEvent.Content, "requesting_device_id").Str
_, domain, _ := gomatrixserverlib.SplitID('@', output.Sender)
if requestingDeviceID != "" && domain != s.serverName {
_, senderDomain, _ := gomatrixserverlib.SplitID('@', output.Sender)
if requestingDeviceID != "" && senderDomain != s.serverName {
// Mark the requesting device as stale, if we don't know about it.
if err := s.keyAPI.PerformMarkAsStaleIfNeeded(ctx, &keyapi.PerformMarkAsStaleRequest{
UserID: output.Sender, DeviceID: requestingDeviceID,
UserID: output.Sender, Domain: senderDomain, DeviceID: requestingDeviceID,
}, &struct{}{}); err != nil {
logger.WithError(err).Errorf("failed to mark as stale if needed")
return false