sign all AP requests

We have been attempting unsigned GET requests and then if they fail,
sending another signed request within the same loop.

This not only causes single-threaded instances to fail, confusing new
users, but is also unnecessary, since servers that don't require
requests to be signed will just ignore the signed headers.

Signing all AP requests simplifies things and should see a
marginal increase in speed when interacting with new servers
that require signed payloads.
This commit is contained in:
Hugh Rundle 2024-09-09 09:46:04 +10:00
parent cbdb59d3cf
commit 9c89e0fbaf
No known key found for this signature in database
GPG key ID: A7E35779918253F9

View file

@ -369,17 +369,13 @@ def resolve_remote_id(
# load the data and create the object # load the data and create the object
try: try:
data = get_data(remote_id) data = get_activitypub_data(remote_id)
except ConnectionError: except ConnectionError:
logger.info("Could not connect to host for remote_id: %s", remote_id) logger.info("Could not connect to host for remote_id: %s", remote_id)
return None return None
except requests.HTTPError as e: except requests.HTTPError as e:
if (e.response is not None) and e.response.status_code == 401: logger.info("Could not connect to host for remote_id: %s", remote_id)
# This most likely means it's a mastodon with secure fetch enabled. return None
data = get_activitypub_data(remote_id)
else:
logger.info("Could not connect to host for remote_id: %s", remote_id)
return None
# determine the model implicitly, if not provided # determine the model implicitly, if not provided
# or if it's a model with subclasses like Status, check again # or if it's a model with subclasses like Status, check again
if not model or hasattr(model.objects, "select_subclasses"): if not model or hasattr(model.objects, "select_subclasses"):