From a0f53afd62273767b0f54f227fd0020f64c3f6de Mon Sep 17 00:00:00 2001 From: Zdziszek <132405081+zdzichu-rks@users.noreply.github.com> Date: Fri, 5 May 2023 14:54:32 +0000 Subject: [PATCH] Handle `DNSNotImplementedError` in SRV resolver (#15523) Signed-off-by: Zdzichu --- changelog.d/15523.bugfix | 1 + synapse/http/federation/srv_resolver.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 changelog.d/15523.bugfix diff --git a/changelog.d/15523.bugfix b/changelog.d/15523.bugfix new file mode 100644 index 000000000..c00754019 --- /dev/null +++ b/changelog.d/15523.bugfix @@ -0,0 +1 @@ +Don't fail on federation over TOR where SRV queries are not supported. Contributed by Zdzichu. diff --git a/synapse/http/federation/srv_resolver.py b/synapse/http/federation/srv_resolver.py index de0e882b3..285baddeb 100644 --- a/synapse/http/federation/srv_resolver.py +++ b/synapse/http/federation/srv_resolver.py @@ -22,7 +22,7 @@ import attr from twisted.internet.error import ConnectError from twisted.names import client, dns -from twisted.names.error import DNSNameError, DomainError +from twisted.names.error import DNSNameError, DNSNotImplementedError, DomainError from synapse.logging.context import make_deferred_yieldable @@ -145,6 +145,9 @@ class SrvResolver: # TODO: cache this. We can get the SOA out of the exception, and use # the negative-TTL value. return [] + except DNSNotImplementedError: + # For .onion homeservers this is unavailable, just fallback to host:8448 + return [] except DomainError as e: # We failed to resolve the name (other than a NameError) # Try something in the cache, else rereaise