diff --git a/src/addrdb.h b/src/addrdb.h --- a/src/addrdb.h +++ b/src/addrdb.h @@ -6,9 +6,9 @@ #ifndef BITCOIN_ADDRDB_H #define BITCOIN_ADDRDB_H +#include "chainparams.h" #include "fs.h" #include "serialize.h" - #include #include @@ -72,9 +72,10 @@ class CAddrDB { private: fs::path pathAddr; + const CChainParams &chainParams; public: - CAddrDB(); + CAddrDB(const CChainParams &chainParams); bool Write(const CAddrMan &addr); bool Read(CAddrMan &addr); bool Read(CAddrMan &addr, CDataStream &ssPeers); @@ -84,9 +85,10 @@ class CBanDB { private: fs::path pathBanlist; + const CChainParams &chainParams; public: - CBanDB(); + CBanDB(const CChainParams &chainParams); bool Write(const banmap_t &banSet); bool Read(banmap_t &banSet); }; diff --git a/src/addrdb.cpp b/src/addrdb.cpp --- a/src/addrdb.cpp +++ b/src/addrdb.cpp @@ -15,7 +15,7 @@ #include "tinyformat.h" #include "util.h" -CBanDB::CBanDB() { +CBanDB::CBanDB(const CChainParams &chainParams) : chainParams(chainParams) { pathBanlist = GetDataDir() / "banlist.dat"; } @@ -27,7 +27,7 @@ // serialize banlist, checksum data up to that point, then append csum CDataStream ssBanlist(SER_DISK, CLIENT_VERSION); - ssBanlist << FLATDATA(Params().DiskMagic()); + ssBanlist << FLATDATA(chainParams.DiskMagic()); ssBanlist << banSet; uint256 hash = Hash(ssBanlist.begin(), ssBanlist.end()); ssBanlist << hash; @@ -94,7 +94,7 @@ ssBanlist >> FLATDATA(pchMsgTmp); // ... verify the network matches ours - if (memcmp(pchMsgTmp, std::begin(Params().DiskMagic()), + if (memcmp(pchMsgTmp, std::begin(chainParams.DiskMagic()), sizeof(pchMsgTmp))) { return error("%s: Invalid network magic number", __func__); } @@ -108,7 +108,7 @@ return true; } -CAddrDB::CAddrDB() { +CAddrDB::CAddrDB(const CChainParams &chainParams) : chainParams(chainParams) { pathAddr = GetDataDir() / "peers.dat"; } @@ -120,7 +120,7 @@ // serialize addresses, checksum data up to that point, then append csum CDataStream ssPeers(SER_DISK, CLIENT_VERSION); - ssPeers << FLATDATA(Params().DiskMagic()); + ssPeers << FLATDATA(chainParams.DiskMagic()); ssPeers << addr; uint256 hash = Hash(ssPeers.begin(), ssPeers.end()); ssPeers << hash; @@ -190,7 +190,7 @@ ssPeers >> FLATDATA(pchMsgTmp); // ... verify the network matches ours - if (memcmp(pchMsgTmp, std::begin(Params().DiskMagic()), + if (memcmp(pchMsgTmp, std::begin(chainParams.DiskMagic()), sizeof(pchMsgTmp))) { return error("%s: Invalid network magic number", __func__); } diff --git a/src/net.cpp b/src/net.cpp --- a/src/net.cpp +++ b/src/net.cpp @@ -415,7 +415,7 @@ int64_t nStart = GetTimeMillis(); - CBanDB bandb; + CBanDB bandb(config->GetChainParams()); banmap_t banmap; GetBanned(banmap); if (bandb.Write(banmap)) { @@ -1715,7 +1715,7 @@ void CConnman::DumpAddresses() { int64_t nStart = GetTimeMillis(); - CAddrDB adb; + CAddrDB adb(config->GetChainParams()); adb.Write(addrman); LogPrint(BCLog::NET, "Flushed %d addresses to peers.dat %dms\n", @@ -2370,7 +2370,7 @@ // Load addresses from peers.dat int64_t nStart = GetTimeMillis(); { - CAddrDB adb; + CAddrDB adb(config->GetChainParams()); if (adb.Read(addrman)) { LogPrintf("Loaded %i addresses from peers.dat %dms\n", addrman.size(), GetTimeMillis() - nStart); @@ -2386,7 +2386,7 @@ } // Load addresses from banlist.dat nStart = GetTimeMillis(); - CBanDB bandb; + CBanDB bandb(config->GetChainParams()); banmap_t banmap; if (bandb.Read(banmap)) { // thread save setter diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp --- a/src/test/net_tests.cpp +++ b/src/test/net_tests.cpp @@ -105,7 +105,7 @@ CDataStream ssPeers2 = AddrmanToStream(addrmanUncorrupted); CAddrMan addrman2; - CAddrDB adb; + CAddrDB adb(Params()); BOOST_CHECK(addrman2.size() == 0); adb.Read(addrman2, ssPeers2); BOOST_CHECK(addrman2.size() == 3); @@ -137,7 +137,7 @@ CDataStream ssPeers2 = AddrmanToStream(addrmanCorrupted); CAddrMan addrman2; - CAddrDB adb; + CAddrDB adb(Params()); BOOST_CHECK(addrman2.size() == 0); adb.Read(addrman2, ssPeers2); BOOST_CHECK(addrman2.size() == 0);