summaryrefslogtreecommitdiff
path: root/internal/federation/dereferencing/thread.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2022-05-23 17:40:03 +0200
committerLibravatar GitHub <noreply@github.com>2022-05-23 16:40:03 +0100
commitf0c9f4169be6c5c7dd913f348cdd294a19038d63 (patch)
tree7d06da6edc0ed92c78b79938a20c7e82f784fac4 /internal/federation/dereferencing/thread.go
parent[docs] document a checklist for how to go about a release (#592) (diff)
downloadgotosocial-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.go13
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