mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-01 16:31:33 +01:00
p2p: Avoid InitError when downgrading peers.dat
fixes #24188 When downgrading, a peers.dat with a future version that has a minimum required version larger than the downgraded version would cause an InitError. This commit changes this behavior to overwrite the existing peers.dat with a new empty one, while creating a backup in peers.dat.bak.
This commit is contained in:
@@ -68,17 +68,16 @@ class AddrmanTest(BitcoinTestFramework):
|
||||
self.start_node(0, extra_args=["-checkaddrman=1"])
|
||||
assert_equal(self.nodes[0].getnodeaddresses(), [])
|
||||
|
||||
self.log.info("Check that addrman from future cannot be read")
|
||||
self.log.info("Check that addrman from future is overwritten with new addrman")
|
||||
self.stop_node(0)
|
||||
write_addrman(peers_dat, lowest_compatible=111)
|
||||
self.nodes[0].assert_start_raises_init_error(
|
||||
expected_msg=init_error(
|
||||
"Unsupported format of addrman database: 1. It is compatible with "
|
||||
"formats >=111, but the maximum supported by this version of "
|
||||
f"{self.config['environment']['PACKAGE_NAME']} is 4.: (.+)"
|
||||
),
|
||||
match=ErrorMatch.FULL_REGEX,
|
||||
)
|
||||
assert_equal(os.path.exists(peers_dat + ".bak"), False)
|
||||
with self.nodes[0].assert_debug_log([
|
||||
f'Creating new peers.dat because the file version was not compatible ("{peers_dat}"). Original backed up to peers.dat.bak',
|
||||
]):
|
||||
self.start_node(0)
|
||||
assert_equal(self.nodes[0].getnodeaddresses(), [])
|
||||
assert_equal(os.path.exists(peers_dat + ".bak"), True)
|
||||
|
||||
self.log.info("Check that corrupt addrman cannot be read (EOF)")
|
||||
self.stop_node(0)
|
||||
|
||||
Reference in New Issue
Block a user