diff options
| author | 2025-01-09 19:21:06 +0100 | |
|---|---|---|
| committer | 2025-01-09 19:21:06 +0100 | |
| commit | 41cb63c936e1520def842f381334397a572bc1cd (patch) | |
| tree | fdd6119870ccfe91edbd1e58b4354f71ca993d67 | |
| parent | Merge branch 'master' of /home/angel/git/snac2 (diff) | |
| download | snac2-41cb63c936e1520def842f381334397a572bc1cd.tar.gz snac2-41cb63c936e1520def842f381334397a572bc1cd.tar.xz snac2-41cb63c936e1520def842f381334397a572bc1cd.zip | |
Added some actor object caching.
Diffstat (limited to '')
| -rw-r--r-- | activitypub.c | 16 | ||||
| -rw-r--r-- | data.c | 4 | ||||
| -rw-r--r-- | snac.h | 2 |
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 | ||
| @@ -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 | } |
| @@ -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 | ||