tlnworker: fix reestablish_peer_for_given_channel by passing chan explicitly - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit d477e3489f88c26ea633187647aea0606c01fdf0 DIR parent 0f00f4f6554d2afc503b63b9510e9c864fc23111 HTML Author: ThomasV <thomasv@electrum.org> Date: Sat, 8 Jun 2019 17:46:53 +0200 lnworker: fix reestablish_peer_for_given_channel by passing chan explicitly Diffstat: M electrum/lnworker.py | 42 ++++++++++++++++--------------- 1 file changed, 22 insertions(+), 20 deletions(-) --- DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py t@@ -911,32 +911,34 @@ class LNWallet(LNWorker): self.network.trigger_callback('channels', self.wallet) self.network.trigger_callback('wallet_updated', self.wallet) - async def reestablish_peers_and_channels(self): - async def reestablish_peer_for_given_channel(): - # try last good address first - peer = self.channel_db.get_last_good_address(chan.node_id) - if peer: - last_tried = self._last_tried_peer.get(peer, 0) - if last_tried + PEER_RETRY_INTERVAL_FOR_CHANNELS < now: - await self._add_peer(peer.host, peer.port, peer.pubkey) - return - # try random address for node_id - node_info = self.channel_db.nodes_get(chan.node_id) - if not node_info: return - addresses = self.channel_db.get_node_addresses(node_info) - if not addresses: return - adr_obj = random.choice(addresses) - host, port = adr_obj.host, adr_obj.port - peer = LNPeerAddr(host, port, chan.node_id) + async def reestablish_peer_for_given_channel(self, chan): + now = time.time() + # try last good address first + peer = self.channel_db.get_last_good_address(chan.node_id) + if peer: last_tried = self._last_tried_peer.get(peer, 0) if last_tried + PEER_RETRY_INTERVAL_FOR_CHANNELS < now: - await self._add_peer(host, port, chan.node_id) + await self._add_peer(peer.host, peer.port, peer.pubkey) + return + # try random address for node_id + node_info = self.channel_db.nodes_get(chan.node_id) + if not node_info: + return + addresses = self.channel_db.get_node_addresses(node_info) + if not addresses: + return + adr_obj = random.choice(addresses) + host, port = adr_obj.host, adr_obj.port + peer = LNPeerAddr(host, port, chan.node_id) + last_tried = self._last_tried_peer.get(peer, 0) + if last_tried + PEER_RETRY_INTERVAL_FOR_CHANNELS < now: + await self._add_peer(host, port, chan.node_id) + async def reestablish_peers_and_channels(self): while True: await asyncio.sleep(1) with self.lock: channels = list(self.channels.values()) - now = time.time() for chan in channels: if chan.is_closed(): continue t@@ -948,7 +950,7 @@ class LNWallet(LNWorker): if not chan.should_try_to_reestablish_peer(): continue peer = self.peers.get(chan.node_id, None) - coro = peer.reestablish_channel(chan) if peer else reestablish_peer_for_given_channel() + coro = peer.reestablish_channel(chan) if peer else self.reestablish_peer_for_given_channel(chan) await self.network.main_taskgroup.spawn(coro) def current_feerate_per_kw(self):