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         }