From 7a820f7561d0201000feeb9922314747ffe8cb4f Mon Sep 17 00:00:00 2001 From: SomberNight Date: Wed, 24 Apr 2024 14:49:23 +0000 Subject: [PATCH] lnworker: add_peer: no DNS lookup if a proxy is set, to avoid a DNS-leak closes https://github.com/spesmilo/electrum/issues/9002 --- electrum/lnworker.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/electrum/lnworker.py b/electrum/lnworker.py index c7e944dc8..62d930bb6 100644 --- a/electrum/lnworker.py +++ b/electrum/lnworker.py @@ -543,14 +543,12 @@ class LNWorker(Logger, EventListener, NetworkRetryManager[LNPeerAddr]): host, port, timestamp = self.choose_preferred_address(list(addrs)) port = int(port) - if host.endswith('.onion'): - if not self.network.proxy: - raise ConnStringFormatError(_('.onion address, but no proxy configured')) - if not self.network.is_proxy_tor: - raise ConnStringFormatError(_('.onion address, but proxy is not a TOR proxy')) - else: + if not self.network.proxy: # Try DNS-resolving the host (if needed). This is simply so that # the caller gets a nice exception if it cannot be resolved. + # (we don't do the DNS lookup if a proxy is set, to avoid a DNS-leak) + if host.endswith('.onion'): + raise ConnStringFormatError(_('.onion address, but no proxy configured')) try: await asyncio.get_running_loop().getaddrinfo(host, port) except socket.gaierror: