lnworker: don't connect to onion peers if no proxy
When gossip is enabled we waste a lot of time trying to connect to onion peers if we don't have a proxy enabled. We should just skip them and try to connect to clearnet peers instead.
This commit is contained in:
@@ -58,3 +58,33 @@ class TestLNPeerManager(ElectrumTestCase):
|
||||
with self.assertRaises(ConnStringFormatError) as cm:
|
||||
await peermgr.add_peer(bad_host_conn_str)
|
||||
self.assertIn("Hostname does not resolve", str(cm.exception))
|
||||
|
||||
def test_choose_preferred_address(self):
|
||||
peermgr = self.lnpeermgr
|
||||
|
||||
# prefer most recent IP address
|
||||
addr_list = [
|
||||
("192.168.1.1", 9735, 100),
|
||||
("host.onion", 9735, 200),
|
||||
("10.0.0.1", 9735, 150),
|
||||
("host.com", 9735, 250)
|
||||
]
|
||||
result = peermgr.choose_preferred_address(addr_list)
|
||||
self.assertEqual(result, ("10.0.0.1", 9735, 150)) # Most recent IP
|
||||
|
||||
# no IP, proxy disabled, filter .onion and choose random
|
||||
self.assertFalse(peermgr.network.proxy.enabled)
|
||||
addr_list = [("host.com", 9735, 100), ("host.onion", 9735, 200)]
|
||||
result = peermgr.choose_preferred_address(addr_list)
|
||||
self.assertEqual(result, ("host.com", 9735, 100))
|
||||
|
||||
# empty list after filtering
|
||||
addr_list = [("host.onion", 9735, 100)]
|
||||
result = peermgr.choose_preferred_address(addr_list)
|
||||
self.assertIsNone(result)
|
||||
|
||||
# return onion if proxy enabled
|
||||
peermgr.network.proxy.enabled = True
|
||||
addr_list = [("host.onion", 9735, 100)]
|
||||
result = peermgr.choose_preferred_address(addr_list)
|
||||
self.assertEqual(result, ("host.onion", 9735, 100))
|
||||
|
||||
Reference in New Issue
Block a user