From 5172dc1e8f422572c708d2b1762ac15088c30a3f Mon Sep 17 00:00:00 2001 From: default Date: Mon, 8 Jan 2024 17:26:33 +0100 Subject: [PATCH] Webfinger queries are cached, as they should. --- webfinger.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/webfinger.c b/webfinger.c index e3d8691..2184097 100644 --- a/webfinger.c +++ b/webfinger.c @@ -46,6 +46,13 @@ int webfinger_request_signed(snac *snac, const char *qs, char **actor, char **us headers = xs_dict_append(headers, "accept", "application/json"); headers = xs_dict_append(headers, "user-agent", USER_AGENT); + xs *obj = NULL; + + /* is it cached? */ + if (valid_status(status = object_get(qs, &obj))) { + /* nothing more to do */ + } + else /* is it a query about one of us? */ if (strcmp(host, xs_dict_get(srv_config, "host")) == 0) { /* route internally */ @@ -68,9 +75,12 @@ int webfinger_request_signed(snac *snac, const char *qs, char **actor, char **us http_signed_request(snac, "GET", url, headers, NULL, 0, &status, &payload, &p_size, 0); } - if (valid_status(status)) { - xs *obj = xs_json_loads(payload); + if (obj == NULL && valid_status(status) && payload) { + obj = xs_json_loads(payload); + object_add(qs, obj); + } + if (obj) { if (user != NULL) { char *subject = xs_dict_get(obj, "subject");