summaryrefslogtreecommitdiff
path: root/internal/federation/dereferencing/status.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2023-06-24 09:32:10 +0200
committerLibravatar GitHub <noreply@github.com>2023-06-24 08:32:10 +0100
commit3e19f480e63085d48ea4242f46b57105edaa640f (patch)
tree0cb8ae6aa87dbde884f33a6b3531d10910cab87b /internal/federation/dereferencing/status.go
parent[bugfix/chore] oauth entropy fix + media cleanup tasks rewrite (#1853) (diff)
downloadgotosocial-3e19f480e63085d48ea4242f46b57105edaa640f.tar.xz
[bugfix] Ensure `InReplyToID` set properly, update dereference ancestors func (#1921)
Diffstat (limited to 'internal/federation/dereferencing/status.go')
-rw-r--r--internal/federation/dereferencing/status.go19
1 files changed, 14 insertions, 5 deletions
diff --git a/internal/federation/dereferencing/status.go b/internal/federation/dereferencing/status.go
index 75adfdd6f..4525f64a9 100644
--- a/internal/federation/dereferencing/status.go
+++ b/internal/federation/dereferencing/status.go
@@ -104,7 +104,7 @@ func (d *deref) getStatusByURI(ctx context.Context, requestUser string, uri *url
}
if status == nil {
- // Ensure that this is isn't a search for a local status.
+ // Ensure that this isn't a search for a local status.
if uri.Host == config.GetHost() || uri.Host == config.GetAccountDomain() {
return nil, nil, gtserror.SetUnretrievable(err) // this will be db.ErrNoEntries
}
@@ -149,7 +149,7 @@ func (d *deref) getStatusByURI(ctx context.Context, requestUser string, uri *url
// RefreshStatus: implements Dereferencer{}.RefreshStatus().
func (d *deref) RefreshStatus(ctx context.Context, requestUser string, status *gtsmodel.Status, apubStatus ap.Statusable, force bool) (*gtsmodel.Status, ap.Statusable, error) {
// Check whether needs update.
- if statusUpToDate(status) {
+ if !force && statusUpToDate(status) {
return status, nil, nil
}
@@ -205,8 +205,16 @@ func (d *deref) RefreshStatusAsync(ctx context.Context, requestUser string, stat
})
}
-// enrichStatus will enrich the given status, whether a new barebones model, or existing model from the database. It handles necessary dereferencing etc.
-func (d *deref) enrichStatus(ctx context.Context, requestUser string, uri *url.URL, status *gtsmodel.Status, apubStatus ap.Statusable) (*gtsmodel.Status, ap.Statusable, error) {
+// enrichStatus will enrich the given status, whether a new
+// barebones model, or existing model from the database.
+// It handles necessary dereferencing, database updates, etc.
+func (d *deref) enrichStatus(
+ ctx context.Context,
+ requestUser string,
+ uri *url.URL,
+ status *gtsmodel.Status,
+ apubStatus ap.Statusable,
+) (*gtsmodel.Status, ap.Statusable, error) {
// Pre-fetch a transport for requesting username, used by later dereferencing.
tsport, err := d.transportController.NewTransportForUsername(ctx, requestUser)
if err != nil {
@@ -217,7 +225,8 @@ func (d *deref) enrichStatus(ctx context.Context, requestUser string, uri *url.U
if blocked, err := d.state.DB.IsDomainBlocked(ctx, uri.Host); err != nil {
return nil, nil, gtserror.Newf("error checking blocked domain: %w", err)
} else if blocked {
- return nil, nil, gtserror.Newf("%s is blocked", uri.Host)
+ err = gtserror.Newf("%s is blocked", uri.Host)
+ return nil, nil, gtserror.SetUnretrievable(err)
}
if apubStatus == nil {