summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2025-01-09 19:21:06 +0100
committerGravatar default2025-01-09 19:21:06 +0100
commit41cb63c936e1520def842f381334397a572bc1cd (patch)
treefdd6119870ccfe91edbd1e58b4354f71ca993d67
parentMerge branch 'master' of /home/angel/git/snac2 (diff)
downloadsnac2-41cb63c936e1520def842f381334397a572bc1cd.tar.gz
snac2-41cb63c936e1520def842f381334397a572bc1cd.tar.xz
snac2-41cb63c936e1520def842f381334397a572bc1cd.zip
Added some actor object caching.
Diffstat (limited to '')
-rw-r--r--activitypub.c16
-rw-r--r--data.c4
-rw-r--r--snac.h2
3 files changed, 20 insertions, 2 deletions
diff --git a/activitypub.c b/activitypub.c
index 81f7708..6f3aefb 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -1194,10 +1194,20 @@ xs_dict *msg_actor(snac *snac)
1194 xs *avtr = NULL; 1194 xs *avtr = NULL;
1195 xs *kid = NULL; 1195 xs *kid = NULL;
1196 xs *f_bio = NULL; 1196 xs *f_bio = NULL;
1197 xs_dict *msg = msg_base(snac, "Person", snac->actor, NULL, NULL, NULL); 1197 xs_dict *msg = NULL;
1198 const char *p; 1198 const char *p;
1199 int n; 1199 int n;
1200 1200
1201 /* everybody loves some caching */
1202 if (time(NULL) - object_mtime(snac->actor) < 6 * 3600 &&
1203 valid_status(object_get(snac->actor, &msg))) {
1204 snac_debug(snac, 1, xs_fmt("Returning cached actor %s", snac->actor));
1205
1206 return msg;
1207 }
1208
1209 msg = msg_base(snac, "Person", snac->actor, NULL, NULL, NULL);
1210
1201 /* change the @context (is this really necessary?) */ 1211 /* change the @context (is this really necessary?) */
1202 ctxt = xs_list_append(ctxt, "https:/" "/www.w3.org/ns/activitystreams"); 1212 ctxt = xs_list_append(ctxt, "https:/" "/www.w3.org/ns/activitystreams");
1203 ctxt = xs_list_append(ctxt, "https:/" "/w3id.org/security/v1"); 1213 ctxt = xs_list_append(ctxt, "https:/" "/w3id.org/security/v1");
@@ -1330,6 +1340,10 @@ xs_dict *msg_actor(snac *snac)
1330 msg = xs_dict_set(msg, "manuallyApprovesFollowers", 1340 msg = xs_dict_set(msg, "manuallyApprovesFollowers",
1331 xs_stock(xs_is_true(manually) ? XSTYPE_TRUE : XSTYPE_FALSE)); 1341 xs_stock(xs_is_true(manually) ? XSTYPE_TRUE : XSTYPE_FALSE));
1332 1342
1343 /* cache it */
1344 snac_debug(snac, 1, xs_fmt("Caching actor %s", snac->actor));
1345 object_add_ow(snac->actor, msg);
1346
1333 return msg; 1347 return msg;
1334} 1348}
1335 1349
diff --git a/data.c b/data.c
index 576bc40..3463727 100644
--- a/data.c
+++ b/data.c
@@ -336,6 +336,10 @@ int user_persist(snac *snac, int publish)
336 336
337 if (!nw) 337 if (!nw)
338 publish = 0; 338 publish = 0;
339 else {
340 /* uncache the actor object */
341 object_del(snac->actor);
342 }
339 } 343 }
340 } 344 }
341 } 345 }
diff --git a/snac.h b/snac.h
index 23ec93a..5729a22 100644
--- a/snac.h
+++ b/snac.h
@@ -1,7 +1,7 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3 3
4#define VERSION "2.68" 4#define VERSION "2.69-dev"
5 5
6#define USER_AGENT "snac/" VERSION 6#define USER_AGENT "snac/" VERSION
7 7