diff options
| author | 2025-09-28 14:48:05 +0200 | |
|---|---|---|
| committer | 2025-09-28 14:48:05 +0200 | |
| commit | 6069660c91106ee676f4dc4fd0e25b3ea6261832 (patch) | |
| tree | 9aca8e52c81105af728035828f659f1db70040f3 /activitypub.c | |
| parent | New function actor_failure() (again, but much better). (diff) | |
| download | penes-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.
Diffstat (limited to 'activitypub.c')
| -rw-r--r-- | activitypub.c | 17 |
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 | } |