From 1d82d13d620cda7cb51da764c74ca944e9e827e5 Mon Sep 17 00:00:00 2001 From: default Date: Fri, 24 Feb 2023 09:00:03 +0100 Subject: [PATCH] In activitypub_request(), retry failed signed requests as non-signed. --- activitypub.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/activitypub.c b/activitypub.c index c05c859..cef5c02 100644 --- 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");