electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 35a8812534df2ab2667824f7dc1a9a2b3bb1bd78
parent b36e9a64512000e77ea682c041389b6326b70032
Author: SomberNight <somber.night@protonmail.com>
Date:   Fri,  6 Mar 2020 15:13:18 +0100

lnworker.reestablish_peer_for_given_channel: give each addr a chance

follow-up fa0ef9c5481861484b504dab5c7eb703c5edb49f

Diffstat:
Melectrum/lnworker.py | 10+++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/electrum/lnworker.py b/electrum/lnworker.py @@ -1336,7 +1336,15 @@ class LNWallet(LNWorker): peer_addresses.append(LNPeerAddr(host, port, chan.node_id)) # will try addresses stored in channel storage peer_addresses += list(chan.get_peer_addresses()) - # now select first one that has not failed recently + # Now select first one that has not failed recently. + # Use long retry interval to check. This ensures each address we gathered gets a chance. + for peer in peer_addresses: + last_tried = self._last_tried_peer.get(peer, 0) + if last_tried + PEER_RETRY_INTERVAL < now: + await self._add_peer(peer.host, peer.port, peer.pubkey) + return + # Still here? That means all addresses failed ~recently. + # Use short retry interval now. for peer in peer_addresses: last_tried = self._last_tried_peer.get(peer, 0) if last_tried + PEER_RETRY_INTERVAL_FOR_CHANNELS < now: