diff options
| -rw-r--r-- | activitypub.c | 26 | ||||
| -rw-r--r-- | data.c | 11 | ||||
| -rw-r--r-- | snac.h | 2 |
3 files changed, 22 insertions, 17 deletions
diff --git a/activitypub.c b/activitypub.c index 4a04000..dee127d 100644 --- a/activitypub.c +++ b/activitypub.c | |||
| @@ -356,23 +356,27 @@ int timeline_request(snac *snac, char **id, xs_str **wrk, int level) | |||
| 356 | } | 356 | } |
| 357 | 357 | ||
| 358 | if (xs_match(type, POSTLIKE_OBJECT_TYPE)) { | 358 | if (xs_match(type, POSTLIKE_OBJECT_TYPE)) { |
| 359 | const char *actor = get_atto(object); | ||
| 360 | |||
| 361 | if (content_check("filter_reject.txt", object)) | 359 | if (content_check("filter_reject.txt", object)) |
| 362 | snac_log(snac, xs_fmt("timeline_request rejected by content %s", nid)); | 360 | snac_log(snac, xs_fmt("timeline_request rejected by content %s", nid)); |
| 363 | else { | 361 | else { |
| 364 | /* request (and drop) the actor for this entry */ | 362 | const char *actor = get_atto(object); |
| 365 | if (!xs_is_null(actor)) | 363 | |
| 366 | actor_request(snac, actor, NULL); | 364 | if (!xs_is_null(actor)) { |
| 365 | /* request (and drop) the actor for this entry */ | ||
| 366 | if (!valid_status(actor_request(snac, actor, NULL))) { | ||
| 367 | /* failed? retry later */ | ||
| 368 | enqueue_actor_refresh(snac, actor, 60); | ||
| 369 | } | ||
| 367 | 370 | ||
| 368 | /* does it have an ancestor? */ | 371 | /* does it have an ancestor? */ |
| 369 | char *in_reply_to = xs_dict_get(object, "inReplyTo"); | 372 | char *in_reply_to = xs_dict_get(object, "inReplyTo"); |
| 370 | 373 | ||
| 371 | /* store */ | 374 | /* store */ |
| 372 | timeline_add(snac, nid, object); | 375 | timeline_add(snac, nid, object); |
| 373 | 376 | ||
| 374 | /* recurse! */ | 377 | /* recurse! */ |
| 375 | timeline_request(snac, &in_reply_to, NULL, level + 1); | 378 | timeline_request(snac, &in_reply_to, NULL, level + 1); |
| 379 | } | ||
| 376 | } | 380 | } |
| 377 | } | 381 | } |
| 378 | } | 382 | } |
| @@ -1632,7 +1632,7 @@ int actor_get_refresh(snac *user, const char *actor, xs_dict **data) | |||
| 1632 | int status = actor_get(actor, data); | 1632 | int status = actor_get(actor, data); |
| 1633 | 1633 | ||
| 1634 | if (status == 205 && user && !xs_startswith(actor, srv_baseurl)) | 1634 | if (status == 205 && user && !xs_startswith(actor, srv_baseurl)) |
| 1635 | enqueue_actor_refresh(user, actor); | 1635 | enqueue_actor_refresh(user, actor, 0); |
| 1636 | 1636 | ||
| 1637 | return status; | 1637 | return status; |
| 1638 | } | 1638 | } |
| @@ -2830,13 +2830,14 @@ void enqueue_verify_links(snac *user) | |||
| 2830 | } | 2830 | } |
| 2831 | 2831 | ||
| 2832 | 2832 | ||
| 2833 | void enqueue_actor_refresh(snac *user, const char *actor) | 2833 | void enqueue_actor_refresh(snac *user, const char *actor, int forward_secs) |
| 2834 | /* enqueues an actor refresh */ | 2834 | /* enqueues an actor refresh */ |
| 2835 | { | 2835 | { |
| 2836 | xs *qmsg = _new_qmsg("actor_refresh", "", 0); | 2836 | xs *qmsg = _new_qmsg("actor_refresh", "", 0); |
| 2837 | char *ntid = xs_dict_get(qmsg, "ntid"); | 2837 | xs *ntid = tid(forward_secs); |
| 2838 | xs *fn = xs_fmt("%s/queue/%s.json", user->basedir, ntid); | 2838 | xs *fn = xs_fmt("%s/queue/%s.json", user->basedir, ntid); |
| 2839 | 2839 | ||
| 2840 | qmsg = xs_dict_set(qmsg, "ntid", ntid); | ||
| 2840 | qmsg = xs_dict_append(qmsg, "actor", actor); | 2841 | qmsg = xs_dict_append(qmsg, "actor", actor); |
| 2841 | 2842 | ||
| 2842 | qmsg = _enqueue_put(fn, qmsg); | 2843 | qmsg = _enqueue_put(fn, qmsg); |
| @@ -234,7 +234,7 @@ void enqueue_message(snac *snac, const xs_dict *msg); | |||
| 234 | void enqueue_close_question(snac *user, const char *id, int end_secs); | 234 | void enqueue_close_question(snac *user, const char *id, int end_secs); |
| 235 | void enqueue_object_request(snac *user, const char *id, int forward_secs); | 235 | void enqueue_object_request(snac *user, const char *id, int forward_secs); |
| 236 | void enqueue_verify_links(snac *user); | 236 | void enqueue_verify_links(snac *user); |
| 237 | void enqueue_actor_refresh(snac *user, const char *actor); | 237 | void enqueue_actor_refresh(snac *user, const char *actor, int forward_secs); |
| 238 | void enqueue_request_replies(snac *user, const char *id); | 238 | void enqueue_request_replies(snac *user, const char *id); |
| 239 | int was_question_voted(snac *user, const char *id); | 239 | int was_question_voted(snac *user, const char *id); |
| 240 | 240 | ||