diff --git a/internal/federation/federatingdb/accept.go b/internal/federation/federatingdb/accept.go index 82e590bfb..c2a743305 100644 --- a/internal/federation/federatingdb/accept.go +++ b/internal/federation/federatingdb/accept.go @@ -401,11 +401,17 @@ func (f *federatingDB) acceptOtherIRI( // TODO: do something with type hinting here. apObjectType := ap.ObjectUnknown + // Extract appropriate approvedByURI from the Accept. + approvedByURI, err := approvedByURI(acceptID, accept) + if err != nil { + return gtserror.NewErrorForbidden(err, err.Error()) + } + // Pass to the processor and let them handle side effects. f.state.Workers.Federator.Queue.Push(&messages.FromFediAPI{ APObjectType: apObjectType, APActivityType: ap.ActivityAccept, - APIRI: acceptID, + APIRI: approvedByURI, APObject: objectIRI, Receiving: receivingAcct, Requesting: requestingAcct, diff --git a/internal/processing/workers/fromfediapi.go b/internal/processing/workers/fromfediapi.go index cf93a5ec5..ce5b8b5d1 100644 --- a/internal/processing/workers/fromfediapi.go +++ b/internal/processing/workers/fromfediapi.go @@ -844,16 +844,16 @@ func (p *fediAPI) AcceptRemoteStatus(ctx context.Context, fMsg *messages.FromFed return gtserror.Newf("%T not parseable as *url.URL", fMsg.APObject) } - acceptIRI := fMsg.APIRI - if acceptIRI == nil { - return gtserror.New("acceptIRI was nil") + approvedByURI := fMsg.APIRI + if approvedByURI == nil { + return gtserror.New("approvedByURI was nil") } // Assume we're accepting a status; create a // barebones status for dereferencing purposes. bareStatus := >smodel.Status{ URI: objectIRI.String(), - ApprovedByURI: acceptIRI.String(), + ApprovedByURI: approvedByURI.String(), } // Call RefreshStatus() to process the provided @@ -872,7 +872,7 @@ func (p *fediAPI) AcceptRemoteStatus(ctx context.Context, fMsg *messages.FromFed } // No error means it was indeed a remote status, and the - // given acceptIRI permitted it. Timeline and notify it. + // given approvedByURI permitted it. Timeline and notify it. if err := p.surface.timelineAndNotifyStatus(ctx, status); err != nil { log.Errorf(ctx, "error timelining and notifying status: %v", err) }