mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-24 22:45:41 +01:00
Merge #19884: p2p: No delay in adding fixed seeds if -dnsseed=0 and peers.dat is empty
fe3e993968[p2p] No delay in adding fixed seeds if -dnsseed=0 and peers.dat is empty. Add -fixedseeds arg. (Dhruv Mehta) Pull request description: Closes #19795 Before PR: If `peers.dat` is empty and `-dnsseed=0`, bitcoind will fallback on to fixed seeds but only after a 60 seconds delay. After PR: There's no 60 second delay. To reproduce: `rm ~/.bitcoin/peers.dat && src/bitcoind -dnsseed=0` without and with patch code Other changes in the PR: - `-fixedseeds` command line argument added: `-dnsseed=0 -fixedseeds=0 -addnode=X` provides a trusted peer only setup. `-dnsseed=0 -fixedseeds=0` allows for a `addnode` RPC to add a trusted peer without falling back to hardcoded seeds. ACKs for top commit: LarryRuane: re-ACKfe3e993968laanwj: re-ACKfe3e993968Tree-SHA512: 79449bf4e83a315be6dbac9bdd226de89d2a3f7f76d9c5640a2cb3572866e6b0e8ed67e65674c9824054cf13119dc01c7e1a33848daac6b6c34dbc158b6dba8f
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
"""Test various command line arguments and configuration file parameters."""
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework import util
|
||||
@@ -147,11 +148,67 @@ class ConfArgsTest(BitcoinTestFramework):
|
||||
self.start_node(0, extra_args=['-nonetworkactive=1'])
|
||||
self.stop_node(0)
|
||||
|
||||
def test_seed_peers(self):
|
||||
self.log.info('Test seed peers, this will take about 2 minutes')
|
||||
default_data_dir = self.nodes[0].datadir
|
||||
|
||||
# No peers.dat exists and -dnsseed=1
|
||||
# We expect the node will use DNS Seeds, but Regtest mode has 0 DNS seeds
|
||||
# So after 60 seconds, the node should fallback to fixed seeds (this is a slow test)
|
||||
assert not os.path.exists(os.path.join(default_data_dir, "peers.dat"))
|
||||
start = time.time()
|
||||
with self.nodes[0].assert_debug_log(expected_msgs=[
|
||||
"Loaded 0 addresses from peers.dat",
|
||||
"0 addresses found from DNS seeds",
|
||||
"Adding fixed seeds as 60 seconds have passed and addrman is empty"], timeout=80):
|
||||
self.start_node(0, extra_args=['-dnsseed=1'])
|
||||
assert time.time() - start >= 60
|
||||
self.stop_node(0)
|
||||
|
||||
# No peers.dat exists and -dnsseed=0
|
||||
# We expect the node will fallback immediately to fixed seeds
|
||||
assert not os.path.exists(os.path.join(default_data_dir, "peers.dat"))
|
||||
start = time.time()
|
||||
with self.nodes[0].assert_debug_log(expected_msgs=[
|
||||
"Loaded 0 addresses from peers.dat",
|
||||
"DNS seeding disabled",
|
||||
"Adding fixed seeds as -dnsseed=0, -addnode is not provided and and all -seednode(s) attempted\n"]):
|
||||
self.start_node(0, extra_args=['-dnsseed=0'])
|
||||
assert time.time() - start < 60
|
||||
self.stop_node(0)
|
||||
|
||||
# No peers.dat exists and dns seeds are disabled.
|
||||
# We expect the node will not add fixed seeds when explicitly disabled.
|
||||
assert not os.path.exists(os.path.join(default_data_dir, "peers.dat"))
|
||||
start = time.time()
|
||||
with self.nodes[0].assert_debug_log(expected_msgs=[
|
||||
"Loaded 0 addresses from peers.dat",
|
||||
"DNS seeding disabled",
|
||||
"Fixed seeds are disabled"]):
|
||||
self.start_node(0, extra_args=['-dnsseed=0', '-fixedseeds=0'])
|
||||
assert time.time() - start < 60
|
||||
self.stop_node(0)
|
||||
|
||||
# No peers.dat exists and -dnsseed=0, but a -addnode is provided
|
||||
# We expect the node will allow 60 seconds prior to using fixed seeds
|
||||
assert not os.path.exists(os.path.join(default_data_dir, "peers.dat"))
|
||||
start = time.time()
|
||||
with self.nodes[0].assert_debug_log(expected_msgs=[
|
||||
"Loaded 0 addresses from peers.dat",
|
||||
"DNS seeding disabled",
|
||||
"Adding fixed seeds as 60 seconds have passed and addrman is empty"],
|
||||
timeout=80):
|
||||
self.start_node(0, extra_args=['-dnsseed=0', '-addnode=fakenodeaddr'])
|
||||
assert time.time() - start >= 60
|
||||
self.stop_node(0)
|
||||
|
||||
|
||||
def run_test(self):
|
||||
self.stop_node(0)
|
||||
|
||||
self.test_log_buffer()
|
||||
self.test_args_log()
|
||||
self.test_seed_peers()
|
||||
self.test_networkactive()
|
||||
|
||||
self.test_config_file_parser()
|
||||
|
||||
Reference in New Issue
Block a user