summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--activitypub.c16
-rw-r--r--data.c2
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
diff --git a/data.c b/data.c
index 3da25f1..dc5d323 100644
--- a/data.c
+++ b/data.c
@@ -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;