mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 06:28:31 +01:00
Use serialization parameters for CAddress serialization
This also cleans up the addrman (de)serialization code paths to only allow `Disk` serialization. Some unit tests previously forced a `Network` serialization, which does not make sense, because Bitcoin Core in production will always `Disk` serialize. This cleanup idea was suggested by Pieter Wuille and implemented by Anthony Towns. Co-authored-by: Pieter Wuille <pieter@wuille.net> Co-authored-by: Anthony Towns <aj@erisian.com.au>
This commit is contained in:
@@ -697,7 +697,7 @@ BOOST_AUTO_TEST_CASE(addrman_serialization)
|
||||
auto addrman_asmap1_dup = std::make_unique<AddrMan>(netgroupman, DETERMINISTIC, ratio);
|
||||
auto addrman_noasmap = std::make_unique<AddrMan>(EMPTY_NETGROUPMAN, DETERMINISTIC, ratio);
|
||||
|
||||
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
|
||||
DataStream stream{};
|
||||
|
||||
CAddress addr = CAddress(ResolveService("250.1.1.1"), NODE_NONE);
|
||||
CNetAddr default_source;
|
||||
@@ -757,7 +757,7 @@ BOOST_AUTO_TEST_CASE(remove_invalid)
|
||||
// Confirm that invalid addresses are ignored in unserialization.
|
||||
|
||||
auto addrman = std::make_unique<AddrMan>(EMPTY_NETGROUPMAN, DETERMINISTIC, GetCheckRatio(m_node));
|
||||
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
|
||||
DataStream stream{};
|
||||
|
||||
const CAddress new1{ResolveService("5.5.5.5"), NODE_NONE};
|
||||
const CAddress new2{ResolveService("6.6.6.6"), NODE_NONE};
|
||||
@@ -940,9 +940,9 @@ BOOST_AUTO_TEST_CASE(addrman_evictionworks)
|
||||
BOOST_CHECK(!addr_pos36.tried);
|
||||
}
|
||||
|
||||
static CDataStream AddrmanToStream(const AddrMan& addrman)
|
||||
static auto AddrmanToStream(const AddrMan& addrman)
|
||||
{
|
||||
CDataStream ssPeersIn(SER_DISK, CLIENT_VERSION);
|
||||
DataStream ssPeersIn{};
|
||||
ssPeersIn << Params().MessageStart();
|
||||
ssPeersIn << addrman;
|
||||
return ssPeersIn;
|
||||
@@ -972,7 +972,7 @@ BOOST_AUTO_TEST_CASE(load_addrman)
|
||||
BOOST_CHECK(addrman.Size() == 3);
|
||||
|
||||
// Test that the de-serialization does not throw an exception.
|
||||
CDataStream ssPeers1 = AddrmanToStream(addrman);
|
||||
auto ssPeers1{AddrmanToStream(addrman)};
|
||||
bool exceptionThrown = false;
|
||||
AddrMan addrman1{EMPTY_NETGROUPMAN, !DETERMINISTIC, GetCheckRatio(m_node)};
|
||||
|
||||
@@ -989,7 +989,7 @@ BOOST_AUTO_TEST_CASE(load_addrman)
|
||||
BOOST_CHECK(exceptionThrown == false);
|
||||
|
||||
// Test that ReadFromStream creates an addrman with the correct number of addrs.
|
||||
CDataStream ssPeers2 = AddrmanToStream(addrman);
|
||||
DataStream ssPeers2 = AddrmanToStream(addrman);
|
||||
|
||||
AddrMan addrman2{EMPTY_NETGROUPMAN, !DETERMINISTIC, GetCheckRatio(m_node)};
|
||||
BOOST_CHECK(addrman2.Size() == 0);
|
||||
@@ -998,9 +998,9 @@ BOOST_AUTO_TEST_CASE(load_addrman)
|
||||
}
|
||||
|
||||
// Produce a corrupt peers.dat that claims 20 addrs when it only has one addr.
|
||||
static CDataStream MakeCorruptPeersDat()
|
||||
static auto MakeCorruptPeersDat()
|
||||
{
|
||||
CDataStream s(SER_DISK, CLIENT_VERSION);
|
||||
DataStream s{};
|
||||
s << ::Params().MessageStart();
|
||||
|
||||
unsigned char nVersion = 1;
|
||||
@@ -1019,7 +1019,7 @@ static CDataStream MakeCorruptPeersDat()
|
||||
std::optional<CNetAddr> resolved{LookupHost("252.2.2.2", false)};
|
||||
BOOST_REQUIRE(resolved.has_value());
|
||||
AddrInfo info = AddrInfo(addr, resolved.value());
|
||||
s << info;
|
||||
s << WithParams(CAddress::V1_DISK, info);
|
||||
|
||||
return s;
|
||||
}
|
||||
@@ -1027,7 +1027,7 @@ static CDataStream MakeCorruptPeersDat()
|
||||
BOOST_AUTO_TEST_CASE(load_addrman_corrupted)
|
||||
{
|
||||
// Test that the de-serialization of corrupted peers.dat throws an exception.
|
||||
CDataStream ssPeers1 = MakeCorruptPeersDat();
|
||||
auto ssPeers1{MakeCorruptPeersDat()};
|
||||
bool exceptionThrown = false;
|
||||
AddrMan addrman1{EMPTY_NETGROUPMAN, !DETERMINISTIC, GetCheckRatio(m_node)};
|
||||
BOOST_CHECK(addrman1.Size() == 0);
|
||||
@@ -1041,7 +1041,7 @@ BOOST_AUTO_TEST_CASE(load_addrman_corrupted)
|
||||
BOOST_CHECK(exceptionThrown);
|
||||
|
||||
// Test that ReadFromStream fails if peers.dat is corrupt
|
||||
CDataStream ssPeers2 = MakeCorruptPeersDat();
|
||||
auto ssPeers2{MakeCorruptPeersDat()};
|
||||
|
||||
AddrMan addrman2{EMPTY_NETGROUPMAN, !DETERMINISTIC, GetCheckRatio(m_node)};
|
||||
BOOST_CHECK(addrman2.Size() == 0);
|
||||
|
||||
Reference in New Issue
Block a user