Handle `DNSNotImplementedError` in SRV resolver (#15523)

Signed-off-by: Zdzichu <zdzichu.rks@protonmail.com>
pull/15548/head
Zdziszek 2023-05-05 14:54:32 +00:00 committed by GitHub
parent ad141efb47
commit a0f53afd62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 1 deletions

1
changelog.d/15523.bugfix Normal file
View File

@ -0,0 +1 @@
Don't fail on federation over TOR where SRV queries are not supported. Contributed by Zdzichu.

View File

@ -22,7 +22,7 @@ import attr
from twisted.internet.error import ConnectError from twisted.internet.error import ConnectError
from twisted.names import client, dns 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 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 # TODO: cache this. We can get the SOA out of the exception, and use
# the negative-TTL value. # the negative-TTL value.
return [] return []
except DNSNotImplementedError:
# For .onion homeservers this is unavailable, just fallback to host:8448
return []
except DomainError as e: except DomainError as e:
# We failed to resolve the name (other than a NameError) # We failed to resolve the name (other than a NameError)
# Try something in the cache, else rereaise # Try something in the cache, else rereaise