Skip to content

Commit fade9a1

Browse files
author
MarcoFalke
committed
Remove confusing CAddrDB
The class only stores the file path, reading it from a global. Globals are confusing and make testing harder. The method reading from a stream does not even use any class members, so putting it in a class is also confusing.
1 parent fa7f77b commit fade9a1

File tree

6 files changed

+22
-33
lines changed

6 files changed

+22
-33
lines changed

src/addrdb.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,22 +170,19 @@ bool CBanDB::Read(banmap_t& banSet)
170170
return true;
171171
}
172172

173-
CAddrDB::CAddrDB()
174-
{
175-
pathAddr = gArgs.GetDataDirNet() / "peers.dat";
176-
}
177-
178-
bool CAddrDB::Write(const CAddrMan& addr)
173+
bool DumpPeerAddresses(const ArgsManager& args, const CAddrMan& addr)
179174
{
175+
const auto pathAddr = args.GetDataDirNet() / "peers.dat";
180176
return SerializeFileDB("peers", pathAddr, addr, CLIENT_VERSION);
181177
}
182178

183-
bool CAddrDB::Read(CAddrMan& addr)
179+
bool ReadPeerAddresses(const ArgsManager& args, CAddrMan& addr)
184180
{
181+
const auto pathAddr = args.GetDataDirNet() / "peers.dat";
185182
return DeserializeFileDB(pathAddr, addr, CLIENT_VERSION);
186183
}
187184

188-
bool CAddrDB::Read(CAddrMan& addr, CDataStream& ssPeers)
185+
bool ReadFromStream(CAddrMan& addr, CDataStream& ssPeers)
189186
{
190187
return DeserializeDB(ssPeers, addr, false);
191188
}

src/addrdb.h

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,15 @@
1212

1313
#include <vector>
1414

15-
class CAddress;
15+
class ArgsManager;
1616
class CAddrMan;
17+
class CAddress;
1718
class CDataStream;
1819

19-
/** Access to the (IP) address database (peers.dat) */
20-
class CAddrDB
21-
{
22-
private:
23-
fs::path pathAddr;
24-
public:
25-
CAddrDB();
26-
bool Write(const CAddrMan& addr);
27-
bool Read(CAddrMan& addr);
28-
static bool Read(CAddrMan& addr, CDataStream& ssPeers);
29-
};
20+
bool DumpPeerAddresses(const ArgsManager& args, const CAddrMan& addr);
21+
bool ReadPeerAddresses(const ArgsManager& args, CAddrMan& addr);
22+
/** Only used by tests. */
23+
bool ReadFromStream(CAddrMan& addr, CDataStream& ssPeers);
3024

3125
/** Access to the banlist database (banlist.json) */
3226
class CBanDB

src/init.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,14 +1206,13 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
12061206
// Load addresses from peers.dat
12071207
uiInterface.InitMessage(_("Loading P2P addresses…").translated);
12081208
int64_t nStart = GetTimeMillis();
1209-
CAddrDB adb;
1210-
if (adb.Read(*node.addrman)) {
1209+
if (ReadPeerAddresses(args, *node.addrman)) {
12111210
LogPrintf("Loaded %i addresses from peers.dat %dms\n", node.addrman->size(), GetTimeMillis() - nStart);
12121211
} else {
12131212
// Addrman can be in an inconsistent state after failure, reset it
12141213
node.addrman = std::make_unique<CAddrMan>(asmap, /* deterministic */ false, /* consistency_check_ratio */ check_addrman);
12151214
LogPrintf("Recreating peers.dat\n");
1216-
adb.Write(*node.addrman);
1215+
DumpPeerAddresses(args, *node.addrman);
12171216
}
12181217
}
12191218

src/net.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1749,8 +1749,7 @@ void CConnman::DumpAddresses()
17491749
{
17501750
int64_t nStart = GetTimeMillis();
17511751

1752-
CAddrDB adb;
1753-
adb.Write(addrman);
1752+
DumpPeerAddresses(::gArgs, addrman);
17541753

17551754
LogPrint(BCLog::NET, "Flushed %d addresses to peers.dat %dms\n",
17561755
addrman.size(), GetTimeMillis() - nStart);

src/test/addrman_tests.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,7 @@ BOOST_AUTO_TEST_CASE(addrman_evictionworks)
10031003
BOOST_CHECK(addrman.SelectTriedCollision().ToString() == "[::]:0");
10041004
}
10051005

1006-
BOOST_AUTO_TEST_CASE(caddrdb_read)
1006+
BOOST_AUTO_TEST_CASE(load_addrman)
10071007
{
10081008
CAddrManUncorrupted addrmanUncorrupted;
10091009

@@ -1038,17 +1038,17 @@ BOOST_AUTO_TEST_CASE(caddrdb_read)
10381038
BOOST_CHECK(addrman1.size() == 3);
10391039
BOOST_CHECK(exceptionThrown == false);
10401040

1041-
// Test that CAddrDB::Read creates an addrman with the correct number of addrs.
1041+
// Test that ReadFromStream creates an addrman with the correct number of addrs.
10421042
CDataStream ssPeers2 = AddrmanToStream(addrmanUncorrupted);
10431043

10441044
CAddrMan addrman2(/* asmap */ std::vector<bool>(), /* deterministic */ false, /* consistency_check_ratio */ 100);
10451045
BOOST_CHECK(addrman2.size() == 0);
1046-
BOOST_CHECK(CAddrDB::Read(addrman2, ssPeers2));
1046+
BOOST_CHECK(ReadFromStream(addrman2, ssPeers2));
10471047
BOOST_CHECK(addrman2.size() == 3);
10481048
}
10491049

10501050

1051-
BOOST_AUTO_TEST_CASE(caddrdb_read_corrupted)
1051+
BOOST_AUTO_TEST_CASE(load_addrman_corrupted)
10521052
{
10531053
CAddrManCorrupted addrmanCorrupted;
10541054

@@ -1064,16 +1064,16 @@ BOOST_AUTO_TEST_CASE(caddrdb_read_corrupted)
10641064
} catch (const std::exception&) {
10651065
exceptionThrown = true;
10661066
}
1067-
// Even through de-serialization failed addrman is not left in a clean state.
1067+
// Even though de-serialization failed addrman is not left in a clean state.
10681068
BOOST_CHECK(addrman1.size() == 1);
10691069
BOOST_CHECK(exceptionThrown);
10701070

1071-
// Test that CAddrDB::Read fails if peers.dat is corrupt
1071+
// Test that ReadFromStream fails if peers.dat is corrupt
10721072
CDataStream ssPeers2 = AddrmanToStream(addrmanCorrupted);
10731073

10741074
CAddrMan addrman2(/* asmap */ std::vector<bool>(), /* deterministic */ false, /* consistency_check_ratio */ 100);
10751075
BOOST_CHECK(addrman2.size() == 0);
1076-
BOOST_CHECK(!CAddrDB::Read(addrman2, ssPeers2));
1076+
BOOST_CHECK(!ReadFromStream(addrman2, ssPeers2));
10771077
}
10781078

10791079

src/test/fuzz/data_stream.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ FUZZ_TARGET_INIT(data_stream_addr_man, initialize_data_stream_addr_man)
2323
FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
2424
CDataStream data_stream = ConsumeDataStream(fuzzed_data_provider);
2525
CAddrMan addr_man(/* asmap */ std::vector<bool>(), /* deterministic */ false, /* consistency_check_ratio */ 0);
26-
CAddrDB::Read(addr_man, data_stream);
26+
ReadFromStream(addr_man, data_stream);
2727
}

0 commit comments

Comments
 (0)