diff --git a/src/addrdb.h b/src/addrdb.h --- a/src/addrdb.h +++ b/src/addrdb.h @@ -85,11 +85,11 @@ /** Access to the banlist database (banlist.dat) */ class CBanDB { private: - fs::path pathBanlist; + const fs::path m_ban_list_path; const CChainParams &chainParams; public: - CBanDB(const CChainParams &chainParams); + CBanDB(fs::path ban_list_path, 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 @@ -113,16 +113,15 @@ } // namespace -CBanDB::CBanDB(const CChainParams &chainParamsIn) : chainParams(chainParamsIn) { - pathBanlist = GetDataDir() / "banlist.dat"; -} +CBanDB::CBanDB(fs::path ban_list_path, const CChainParams &_chainParams) + : m_ban_list_path(std::move(ban_list_path)), chainParams(_chainParams) {} bool CBanDB::Write(const banmap_t &banSet) { - return SerializeFileDB(chainParams, "banlist", pathBanlist, banSet); + return SerializeFileDB(chainParams, "banlist", m_ban_list_path, banSet); } bool CBanDB::Read(banmap_t &banSet) { - return DeserializeFileDB(chainParams, pathBanlist, banSet); + return DeserializeFileDB(chainParams, m_ban_list_path, banSet); } CAddrDB::CAddrDB(const CChainParams &chainParamsIn) diff --git a/src/init.cpp b/src/init.cpp --- a/src/init.cpp +++ b/src/init.cpp @@ -1944,7 +1944,8 @@ // need to reindex later. assert(!g_banman); - g_banman = std::make_unique(config.GetChainParams(), &uiInterface); + g_banman = std::make_unique(GetDataDir() / "banlist.dat", + config.GetChainParams(), &uiInterface); assert(!g_connman); g_connman = std::make_unique( config, GetRand(std::numeric_limits::max()), diff --git a/src/net.h b/src/net.h --- a/src/net.h +++ b/src/net.h @@ -135,7 +135,8 @@ // between nodes running old code and nodes running // new code. ~BanMan(); - BanMan(const CChainParams &_params, CClientUIInterface *client_interface); + BanMan(fs::path ban_file, const CChainParams &chainParams, + CClientUIInterface *client_interface); void Ban(const CNetAddr &netAddr, const BanReason &reason, int64_t bantimeoffset = 0, bool sinceUnixEpoch = false); void Ban(const CSubNet &subNet, const BanReason &reason, @@ -161,8 +162,7 @@ CCriticalSection cs_setBanned; bool setBannedIsDirty; CClientUIInterface *clientInterface = nullptr; - - const CChainParams ¶ms; + CBanDB m_ban_db; }; class NetEventsInterface; diff --git a/src/net.cpp b/src/net.cpp --- a/src/net.cpp +++ b/src/net.cpp @@ -481,10 +481,10 @@ } int64_t nStart = GetTimeMillis(); - CBanDB bandb(params); + banmap_t banmap; GetBanned(banmap); - if (bandb.Write(banmap)) { + if (m_ban_db.Write(banmap)) { SetBannedSetDirty(false); } @@ -2518,9 +2518,10 @@ return true; } -BanMan::BanMan(const CChainParams &_params, +BanMan::BanMan(fs::path ban_file, const CChainParams &chainParams, CClientUIInterface *client_interface) - : clientInterface(client_interface), params(_params) { + : clientInterface(client_interface), + m_ban_db(std::move(ban_file), chainParams) { if (clientInterface) { clientInterface->InitMessage(_("Loading banlist...")); } @@ -2528,9 +2529,8 @@ // Load addresses from banlist.dat int64_t nStart = GetTimeMillis(); setBannedIsDirty = false; - CBanDB bandb(params); banmap_t banmap; - if (bandb.Read(banmap)) { + if (m_ban_db.Read(banmap)) { // thread save setter SetBanned(banmap); // no need to write down, just read data diff --git a/src/test/denialofservice_tests.cpp b/src/test/denialofservice_tests.cpp --- a/src/test/denialofservice_tests.cpp +++ b/src/test/denialofservice_tests.cpp @@ -229,7 +229,8 @@ const Config &config = GetConfig(); std::atomic interruptDummy(false); - auto banman = std::make_unique(config.GetChainParams(), nullptr); + auto banman = std::make_unique(GetDataDir() / "banlist.dat", + config.GetChainParams(), nullptr); auto connman = std::make_unique(config, 0x1337, 0x1337); auto peerLogic = std::make_unique( connman.get(), banman.get(), scheduler, false); @@ -293,7 +294,8 @@ const Config &config = GetConfig(); std::atomic interruptDummy(false); - auto banman = std::make_unique(config.GetChainParams(), nullptr); + auto banman = std::make_unique(GetDataDir() / "banlist.dat", + config.GetChainParams(), nullptr); auto connman = std::make_unique(config, 0x1337, 0x1337); auto peerLogic = std::make_unique( connman.get(), banman.get(), scheduler, false); @@ -345,7 +347,8 @@ const Config &config = GetConfig(); std::atomic interruptDummy(false); - auto banman = std::make_unique(config.GetChainParams(), nullptr); + auto banman = std::make_unique(GetDataDir() / "banlist.dat", + config.GetChainParams(), nullptr); auto connman = std::make_unique(config, 0x1337, 0x1337); auto peerLogic = std::make_unique( connman.get(), banman.get(), scheduler, false); diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp --- a/src/test/test_bitcoin.cpp +++ b/src/test/test_bitcoin.cpp @@ -117,7 +117,8 @@ threadGroup.create_thread(&ThreadScriptCheck); } - g_banman = std::make_unique(chainparams, nullptr); + g_banman = std::make_unique(GetDataDir() / "banlist.dat", + chainparams, nullptr); // Deterministic randomness for tests. g_connman = std::make_unique(config, 0x1337, 0x1337); }