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 { type PerformMarkAsStaleRequest struct {
UserID string UserID string
Domain gomatrixserverlib.ServerName
DeviceID string DeviceID string
} }

View file

@ -233,11 +233,7 @@ func (a *KeyInternalAPI) PerformMarkAsStaleIfNeeded(ctx context.Context, req *ap
return err return err
} }
if len(knownDevices) == 0 { if len(knownDevices) == 0 {
_, remoteServer, err := gomatrixserverlib.SplitID('@', req.UserID) return a.Updater.ManualUpdate(ctx, req.Domain, req.UserID)
if err != nil {
return err
}
return a.Updater.ManualUpdate(ctx, remoteServer, req.UserID)
} }
return nil 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") 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" { if output.Type == "m.room_key_request" {
requestingDeviceID := gjson.GetBytes(output.SendToDeviceEvent.Content, "requesting_device_id").Str requestingDeviceID := gjson.GetBytes(output.SendToDeviceEvent.Content, "requesting_device_id").Str
_, domain, _ := gomatrixserverlib.SplitID('@', output.Sender) _, senderDomain, _ := gomatrixserverlib.SplitID('@', output.Sender)
if requestingDeviceID != "" && domain != s.serverName { if requestingDeviceID != "" && senderDomain != s.serverName {
// Mark the requesting device as stale, if we don't know about it. // Mark the requesting device as stale, if we don't know about it.
if err := s.keyAPI.PerformMarkAsStaleIfNeeded(ctx, &keyapi.PerformMarkAsStaleRequest{ if err := s.keyAPI.PerformMarkAsStaleIfNeeded(ctx, &keyapi.PerformMarkAsStaleRequest{
UserID: output.Sender, DeviceID: requestingDeviceID, UserID: output.Sender, Domain: senderDomain, DeviceID: requestingDeviceID,
}, &struct{}{}); err != nil { }, &struct{}{}); err != nil {
logger.WithError(err).Errorf("failed to mark as stale if needed") logger.WithError(err).Errorf("failed to mark as stale if needed")
return false return false