summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar grunfink2025-09-28 14:48:05 +0200
committerGravatar grunfink2025-09-28 14:48:05 +0200
commit6069660c91106ee676f4dc4fd0e25b3ea6261832 (patch)
tree9aca8e52c81105af728035828f659f1db70040f3
parentNew function actor_failure() (again, but much better). (diff)
downloadpenes-snac2-6069660c91106ee676f4dc4fd0e25b3ea6261832.tar.gz
penes-snac2-6069660c91106ee676f4dc4fd0e25b3ea6261832.tar.xz
penes-snac2-6069660c91106ee676f4dc4fd0e25b3ea6261832.zip
In actor_refresh, use actor_failure() to avoid retrying 410 Gone failures.
-rw-r--r--activitypub.c17
1 files changed, 15 insertions, 2 deletions
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)
3033 const char *actor = xs_dict_get(q_item, "actor"); 3033 const char *actor = xs_dict_get(q_item, "actor");
3034 double mtime = object_mtime(actor); 3034 double mtime = object_mtime(actor);
3035 3035
3036 if (actor_failure(actor, 0) == -1) {
3037 /* actor is broken beyond repair */
3038 snac_debug(user, 1, xs_fmt("actor_refresh skipped broken actor %s", actor));
3039 }
3040 else
3036 /* only refresh if it was refreshed more than an hour ago */ 3041 /* only refresh if it was refreshed more than an hour ago */
3037 if (mtime + 3600.0 < (double) time(NULL)) { 3042 if (mtime + 3600.0 < (double) time(NULL)) {
3038 xs *actor_o = NULL; 3043 xs *actor_o = NULL;
@@ -3040,8 +3045,16 @@ void process_user_queue_item(snac *user, xs_dict *q_item)
3040 3045
3041 if (valid_status((status = activitypub_request(user, actor, &actor_o)))) 3046 if (valid_status((status = activitypub_request(user, actor, &actor_o))))
3042 actor_add(actor, actor_o); 3047 actor_add(actor, actor_o);
3043 else 3048 else {
3044 object_touch(actor); 3049 if (status == HTTP_STATUS_GONE) {
3050 actor_failure(actor, 1);
3051 snac_log(user, xs_fmt("actor_refresh marking actor %s as broken %d", actor, status));
3052 }
3053 else {
3054 actor_failure(actor, 2);
3055 object_touch(actor);
3056 }
3057 }
3045 3058
3046 snac_log(user, xs_fmt("actor_refresh %s %d", actor, status)); 3059 snac_log(user, xs_fmt("actor_refresh %s %d", actor, status));
3047 } 3060 }