From 7e4f87b56451f8259b491067c64cf51c99b01765 Mon Sep 17 00:00:00 2001 From: f321x Date: Wed, 30 Apr 2025 11:24:46 +0200 Subject: [PATCH] fix: don't suggest onion peers for channel opening `suggest_node_channel_open()` did suggest peers with onion hostname, even if the caller has no proxy enabled. This causes channel openings in the gui to sometimes just not work and show a `CancelledError()` becaues it wasn't able to connect to the peer. Now only clearnet peers will get recommended, as these will always work. --- electrum/channel_db.py | 1 + electrum/lnrater.py | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/electrum/channel_db.py b/electrum/channel_db.py index 173c0fc63..bba7e965f 100644 --- a/electrum/channel_db.py +++ b/electrum/channel_db.py @@ -217,6 +217,7 @@ class NodeInfo(NamedTuple): return b'\x01' + ip_addr.packed + port_bytes elif ip_addr.version == 6: return b'\x02' + ip_addr.packed + port_bytes + return b'' elif hostname.endswith('.onion'): # Tor onion v3 onion_addr: bytes = base64.b32decode(hostname[:-6], casefold=True) return b'\x04' + onion_addr + port_bytes diff --git a/electrum/lnrater.py b/electrum/lnrater.py index 674cf6f2a..0ff6a3fd5 100644 --- a/electrum/lnrater.py +++ b/electrum/lnrater.py @@ -258,6 +258,12 @@ class LNRater(Logger): # don't want to connect to nodes we already have a channel with on another device if self.lnworker.has_conflicting_backup_with(pk): continue + # node should be on clearnet and have an address saved + for (hostname, _, _) in self.lnworker.channel_db.get_node_addresses(node_id=pk): + if not hostname.endswith(".onion"): + break + else: + continue break alias = node_info.alias if node_info else 'unknown node alias'