From facdd2c08094ad378351375541fa8e65459fa8d1 Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Sun, 20 Nov 2022 12:02:38 -0700 Subject: More error handling for remote fetch --- users/models/identity.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/users/models/identity.py b/users/models/identity.py index 5056ce0..452bde7 100644 --- a/users/models/identity.py +++ b/users/models/identity.py @@ -270,12 +270,15 @@ class Identity(StatorModel): (actor uri, canonical handle) or None, None if it does not resolve. """ domain = handle.split("@")[1] - async with httpx.AsyncClient() as client: - response = await client.get( - f"https://{domain}/.well-known/webfinger?resource=acct:{handle}", - headers={"Accept": "application/json"}, - follow_redirects=True, - ) + try: + async with httpx.AsyncClient() as client: + response = await client.get( + f"https://{domain}/.well-known/webfinger?resource=acct:{handle}", + headers={"Accept": "application/json"}, + follow_redirects=True, + ) + except (httpx.ReadTimeout, httpx.ReadError, httpx.RemoteProtocolError): + return None, None if response.status_code >= 400: return None, None data = response.json() @@ -303,7 +306,7 @@ class Identity(StatorModel): headers={"Accept": "application/json"}, follow_redirects=True, ) - except (httpx.ReadTimeout, httpx.ReadError): + except (httpx.ReadTimeout, httpx.ReadError, httpx.RemoteProtocolError): return False if response.status_code >= 400: return False -- cgit v1.2.3