From 6069660c91106ee676f4dc4fd0e25b3ea6261832 Mon Sep 17 00:00:00 2001 From: grunfink Date: Sun, 28 Sep 2025 14:48:05 +0200 Subject: In actor_refresh, use actor_failure() to avoid retrying 410 Gone failures. --- activitypub.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'activitypub.c') diff --git a/activitypub.c b/activitypub.c index ec321d9..2d3d903 100644 --- a/activitypub.c +++ b/activitypub.c @@ -3033,6 +3033,11 @@ void process_user_queue_item(snac *user, xs_dict *q_item) const char *actor = xs_dict_get(q_item, "actor"); double mtime = object_mtime(actor); + if (actor_failure(actor, 0) == -1) { + /* actor is broken beyond repair */ + snac_debug(user, 1, xs_fmt("actor_refresh skipped broken actor %s", actor)); + } + else /* only refresh if it was refreshed more than an hour ago */ if (mtime + 3600.0 < (double) time(NULL)) { xs *actor_o = NULL; @@ -3040,8 +3045,16 @@ void process_user_queue_item(snac *user, xs_dict *q_item) if (valid_status((status = activitypub_request(user, actor, &actor_o)))) actor_add(actor, actor_o); - else - object_touch(actor); + else { + if (status == HTTP_STATUS_GONE) { + actor_failure(actor, 1); + snac_log(user, xs_fmt("actor_refresh marking actor %s as broken %d", actor, status)); + } + else { + actor_failure(actor, 2); + object_touch(actor); + } + } snac_log(user, xs_fmt("actor_refresh %s %d", actor, status)); } -- cgit v1.2.3