diff options
author | MarcoFalke <falke.marco@gmail.com> | 2021-08-21 13:49:16 +0200 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2021-09-09 09:11:41 +0200 |
commit | fa5aeec80c6cdca9ca027d80dff3b397911ff2c2 (patch) | |
tree | ebf8556dc2ff667bf3929c1f2bc3a72b447fe77a /src/init.cpp | |
parent | e4aa9b15b9f80a08076ad329b473fe9107d9e65e (diff) |
Move LoadAddrman from init to addrdb
Init should only concern itself with the initialization order, not the
detailed initialization logic of every module.
Also, inlining logic into a method that is ~800 lines of code, makes it
impossible to unit test on its own.
Diffstat (limited to 'src/init.cpp')
-rw-r--r-- | src/init.cpp | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/src/init.cpp b/src/init.cpp index 2869cf4daf..ba1c88ad91 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1200,19 +1200,9 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) LogPrintf("Using /16 prefix for IP bucketing\n"); } - auto check_addrman = std::clamp<int32_t>(args.GetArg("-checkaddrman", DEFAULT_ADDRMAN_CONSISTENCY_CHECKS), 0, 1000000); - node.addrman = std::make_unique<CAddrMan>(asmap, /* deterministic */ false, /* consistency_check_ratio */ check_addrman); - - // Load addresses from peers.dat uiInterface.InitMessage(_("Loading P2P addresses…").translated); - int64_t nStart = GetTimeMillis(); - if (ReadPeerAddresses(args, *node.addrman)) { - LogPrintf("Loaded %i addresses from peers.dat %dms\n", node.addrman->size(), GetTimeMillis() - nStart); - } else { - // Addrman can be in an inconsistent state after failure, reset it - node.addrman = std::make_unique<CAddrMan>(asmap, /* deterministic */ false, /* consistency_check_ratio */ check_addrman); - LogPrintf("Recreating peers.dat\n"); - DumpPeerAddresses(args, *node.addrman); + if (const auto error{LoadAddrman(asmap, args, node.addrman)}) { + return InitError(*error); } } |