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:
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");