diff options
| -rw-r--r-- | activitypub.c | 16 | ||||
| -rw-r--r-- | data.c | 2 |
2 files changed, 11 insertions, 7 deletions
diff --git a/activitypub.c b/activitypub.c index bd72cb4..18e270a 100644 --- a/activitypub.c +++ b/activitypub.c | |||
| @@ -127,8 +127,14 @@ int actor_request(snac *user, const char *actor, xs_dict **data) | |||
| 127 | /* get from disk first */ | 127 | /* get from disk first */ |
| 128 | status = actor_get(actor, data); | 128 | status = actor_get(actor, data); |
| 129 | 129 | ||
| 130 | if (status != 200) { | 130 | if (status == 205) { |
| 131 | /* actor data non-existent or stale: get from the net */ | 131 | /* stale actor: use it, but request a refresh */ |
| 132 | if (!xs_startswith(actor, srv_baseurl)) | ||
| 133 | enqueue_actor_request(user, actor); | ||
| 134 | } | ||
| 135 | else | ||
| 136 | if (!valid_status(status)) { | ||
| 137 | /* actor data non-existent: get from the net */ | ||
| 132 | status = activitypub_request(user, actor, &payload); | 138 | status = activitypub_request(user, actor, &payload); |
| 133 | 139 | ||
| 134 | if (valid_status(status)) { | 140 | if (valid_status(status)) { |
| @@ -149,8 +155,6 @@ int actor_request(snac *user, const char *actor, xs_dict **data) | |||
| 149 | if (valid_status(status) && data && *data) | 155 | if (valid_status(status) && data && *data) |
| 150 | inbox_add_by_actor(*data); | 156 | inbox_add_by_actor(*data); |
| 151 | } | 157 | } |
| 152 | else | ||
| 153 | srv_debug(2, xs_fmt("NOT collected")); | ||
| 154 | 158 | ||
| 155 | return status; | 159 | return status; |
| 156 | } | 160 | } |
| @@ -2248,9 +2252,9 @@ void process_user_queue_item(snac *snac, xs_dict *q_item) | |||
| 2248 | if (strcmp(type, "actor_request") == 0) { | 2252 | if (strcmp(type, "actor_request") == 0) { |
| 2249 | const char *actor = xs_dict_get(q_item, "actor"); | 2253 | const char *actor = xs_dict_get(q_item, "actor"); |
| 2250 | double mtime = object_mtime(actor); | 2254 | double mtime = object_mtime(actor); |
| 2251 | double max_time = 3600.0 * 36.0; | ||
| 2252 | 2255 | ||
| 2253 | if (mtime + max_time < (double) time(NULL)) { | 2256 | /* only refresh if it was refreshed more than an hour ago */ |
| 2257 | if (mtime + 3600.0 < (double) time(NULL)) { | ||
| 2254 | xs *actor_o = NULL; | 2258 | xs *actor_o = NULL; |
| 2255 | int status; | 2259 | int status; |
| 2256 | 2260 | ||
| @@ -1596,7 +1596,7 @@ int actor_get_refresh(snac *user, const char *actor, xs_dict **data) | |||
| 1596 | { | 1596 | { |
| 1597 | int status = actor_get(actor, data); | 1597 | int status = actor_get(actor, data); |
| 1598 | 1598 | ||
| 1599 | if (status == 205 && user && !xs_startswith(user->actor, srv_baseurl)) | 1599 | if (status == 205 && user && !xs_startswith(actor, srv_baseurl)) |
| 1600 | enqueue_actor_request(user, actor); | 1600 | enqueue_actor_request(user, actor); |
| 1601 | 1601 | ||
| 1602 | return status; | 1602 | return status; |