Skip to content

Commit

Permalink
lnworker: don't query DNS for .onion hosts (fixes #9002)
Browse files Browse the repository at this point in the history
  • Loading branch information
accumulator committed Apr 16, 2024
1 parent 9c94eb9 commit e0e00da
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions electrum/lnworker.py
Expand Up @@ -542,12 +542,20 @@ async def add_peer(self, connect_str: str) -> Peer:
raise ConnStringFormatError(_('Don\'t know any addresses for node:') + ' ' + node_id.hex())
host, port, timestamp = self.choose_preferred_address(list(addrs))
port = int(port)
# Try DNS-resolving the host (if needed). This is simply so that
# the caller gets a nice exception if it cannot be resolved.
try:
await asyncio.get_running_loop().getaddrinfo(host, port)
except socket.gaierror:
raise ConnStringFormatError(_('Hostname does not resolve (getaddrinfo failed)'))

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:
# Try DNS-resolving the host (if needed). This is simply so that
# the caller gets a nice exception if it cannot be resolved.
try:
await asyncio.get_running_loop().getaddrinfo(host, port)
except socket.gaierror:
raise ConnStringFormatError(_('Hostname does not resolve (getaddrinfo failed)'))

# add peer
peer = await self._add_peer(host, port, node_id)
return peer
Expand Down

0 comments on commit e0e00da

Please sign in to comment.