commit 6069660
grunfink
·
2025-09-28 12:48:05 +0000 UTC
parent cddb272
In actor_refresh, use actor_failure() to avoid retrying 410 Gone failures.
1 files changed,
+15,
-2
+15,
-2
1@@ -3033,6 +3033,11 @@ void process_user_queue_item(snac *user, xs_dict *q_item)
2 const char *actor = xs_dict_get(q_item, "actor");
3 double mtime = object_mtime(actor);
4
5+ if (actor_failure(actor, 0) == -1) {
6+ /* actor is broken beyond repair */
7+ snac_debug(user, 1, xs_fmt("actor_refresh skipped broken actor %s", actor));
8+ }
9+ else
10 /* only refresh if it was refreshed more than an hour ago */
11 if (mtime + 3600.0 < (double) time(NULL)) {
12 xs *actor_o = NULL;
13@@ -3040,8 +3045,16 @@ void process_user_queue_item(snac *user, xs_dict *q_item)
14
15 if (valid_status((status = activitypub_request(user, actor, &actor_o))))
16 actor_add(actor, actor_o);
17- else
18- object_touch(actor);
19+ else {
20+ if (status == HTTP_STATUS_GONE) {
21+ actor_failure(actor, 1);
22+ snac_log(user, xs_fmt("actor_refresh marking actor %s as broken %d", actor, status));
23+ }
24+ else {
25+ actor_failure(actor, 2);
26+ object_touch(actor);
27+ }
28+ }
29
30 snac_log(user, xs_fmt("actor_refresh %s %d", actor, status));
31 }