From 38622c0a99f7c8d3a0e5286d17ab129bdb587856 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 15 Oct 2019 01:05:37 -0300 Subject: [PATCH 1/2] fix expected returned peer address values when opening channel. --- electrum/lnworker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrum/lnworker.py b/electrum/lnworker.py index 4832297ff..2129b0a1d 100644 --- a/electrum/lnworker.py +++ b/electrum/lnworker.py @@ -795,7 +795,7 @@ class LNWallet(LNWorker): addrs = self.channel_db.get_node_addresses(node_id) if len(addrs) == 0: raise ConnStringFormatError(_('Don\'t know any addresses for node:') + ' ' + bh2u(node_id)) - host, port = self.choose_preferred_address(addrs) + host, port, _ = self.choose_preferred_address(addrs) try: socket.getaddrinfo(host, int(port)) except socket.gaierror: From 106bc6d2b21023ce7fd70a1c10609322c68d10bf Mon Sep 17 00:00:00 2001 From: SomberNight Date: Tue, 15 Oct 2019 15:41:18 +0200 Subject: [PATCH 2/2] follow-up prev --- electrum/channel_db.py | 3 ++- electrum/lnworker.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/electrum/channel_db.py b/electrum/channel_db.py index 959e32e3b..9ab2ed05e 100644 --- a/electrum/channel_db.py +++ b/electrum/channel_db.py @@ -250,7 +250,8 @@ class ChannelDB(SqlDB): self._channels = {} # type: Dict[bytes, ChannelInfo] self._policies = {} self._nodes = {} - self._addresses = defaultdict(set) + # node_id -> (host, port, ts) + self._addresses = defaultdict(set) # type: Dict[bytes, Set[Tuple[str, int, int]]] self._channels_for_node = defaultdict(set) self.data_loaded = asyncio.Event() self.network = network # only for callback diff --git a/electrum/lnworker.py b/electrum/lnworker.py index 2129b0a1d..ddfb8934f 100644 --- a/electrum/lnworker.py +++ b/electrum/lnworker.py @@ -251,7 +251,7 @@ class LNWorker(Logger): return peers @staticmethod - def choose_preferred_address(addr_list: List[Tuple[str, int]]) -> Tuple[str, int]: + def choose_preferred_address(addr_list: Sequence[Tuple[str, int, int]]) -> Tuple[str, int, int]: assert len(addr_list) >= 1 # choose first one that is an IP for host, port, timestamp in addr_list: @@ -793,9 +793,9 @@ class LNWallet(LNWorker): host, port = split_host_port(rest) else: addrs = self.channel_db.get_node_addresses(node_id) - if len(addrs) == 0: + if not addrs: raise ConnStringFormatError(_('Don\'t know any addresses for node:') + ' ' + bh2u(node_id)) - host, port, _ = self.choose_preferred_address(addrs) + host, port, timestamp = self.choose_preferred_address(addrs) try: socket.getaddrinfo(host, int(port)) except socket.gaierror: