diff options
author | 2022-05-23 17:40:03 +0200 | |
---|---|---|
committer | 2022-05-23 16:40:03 +0100 | |
commit | f0c9f4169be6c5c7dd913f348cdd294a19038d63 (patch) | |
tree | 7d06da6edc0ed92c78b79938a20c7e82f784fac4 /internal/federation/dereferencing/thread.go | |
parent | [docs] document a checklist for how to go about a release (#592) (diff) | |
download | gotosocial-f0c9f4169be6c5c7dd913f348cdd294a19038d63.tar.xz |
[bugfix] Fix multiple dereferences of boosted status causing media duplication (#589)
* add some announces to test models
* start on announce test logic
* test federatingDB.Announce
* change signature of GetRemoteStatus
* remove 'refresh' logic and replace it with refetch
* go fmt
* remove timeline manager from processor test
* make zork created at determinate
* test get account statuses
* test get + serialize zork
* make account keys determinate
* make admin accountCreate time determinate
* test account to as
* init test config before test log
* test status to frontend
* remove daft Within check
* hack around a bit
* use index of slice
Diffstat (limited to 'internal/federation/dereferencing/thread.go')
-rw-r--r-- | internal/federation/dereferencing/thread.go | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/internal/federation/dereferencing/thread.go b/internal/federation/dereferencing/thread.go index f527b99cd..469defd5e 100644 --- a/internal/federation/dereferencing/thread.go +++ b/internal/federation/dereferencing/thread.go @@ -52,9 +52,9 @@ func (d *deref) DereferenceThread(ctx context.Context, username string, statusIR } // first make sure we have this status in our db - _, statusable, _, err := d.GetRemoteStatus(ctx, username, statusIRI, true, false) + _, statusable, err := d.GetRemoteStatus(ctx, username, statusIRI, true, false) if err != nil { - return fmt.Errorf("DereferenceThread: error getting status with id %s: %s", statusIRI.String(), err) + return fmt.Errorf("DereferenceThread: error getting initial status with id %s: %s", statusIRI.String(), err) } // first iterate up through ancestors, dereferencing if necessary as we go @@ -106,9 +106,8 @@ func (d *deref) iterateAncestors(ctx context.Context, username string, statusIRI return d.iterateAncestors(ctx, username, *nextIRI) } - // If we reach here, we're looking at a remote status -- make sure we have it in our db by calling GetRemoteStatus - // We call it with refresh to true because we want the statusable representation to parse inReplyTo from. - _, statusable, _, err := d.GetRemoteStatus(ctx, username, &statusIRI, true, false) + // If we reach here, we're looking at a remote status + _, statusable, err := d.GetRemoteStatus(ctx, username, &statusIRI, true, false) if err != nil { l.Debugf("error getting remote status: %s", err) return nil @@ -220,8 +219,8 @@ pageLoop: foundReplies++ // get the remote statusable and put it in the db - _, statusable, new, err := d.GetRemoteStatus(ctx, username, itemURI, false, false) - if new && err == nil && statusable != nil { + _, statusable, err := d.GetRemoteStatus(ctx, username, itemURI, false, false) + if err == nil { // now iterate descendants of *that* status if err := d.iterateDescendants(ctx, username, *itemURI, statusable); err != nil { continue |