snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

commit 1d82d13d620cda7cb51da764c74ca944e9e827e5
parent 163051906640bc401ae7aefa97c101c3696c9167
Author: default <nobody@localhost>
Date:   Fri, 24 Feb 2023 09:00:03 +0100

In activitypub_request(), retry failed signed requests as non-signed.

Diffstat:
Mactivitypub.c | 16+++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/activitypub.c b/activitypub.c @@ -55,13 +55,23 @@ int activitypub_request(snac *snac, char *url, d_char **data) int p_size; char *ctype; - /* check if it's an url for this same site */ - /* ... */ - /* get from the net */ response = http_signed_request(snac, "GET", url, NULL, NULL, 0, &status, &payload, &p_size, 0); + if (status == 0 || (status >= 500 && status <= 599)) { + /* I found an instance running Misskey that returned + 500 on signed messages but returned the object + perfectly without signing (?), so why not try */ + xs_free(response); + + xs *hdrs = xs_dict_new(); + hdrs = xs_dict_append(hdrs, "accept", "application/activity+json"); + + response = xs_http_request("GET", url, hdrs, + NULL, 0, &status, &payload, &p_size, 0); + } + if (valid_status(status)) { /* ensure it's ActivityPub data */ ctype = xs_dict_get(response, "content-type");