mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
refactor: Add and use kernel::ImportMempoolOptions
This allows optional named arguments with default values.
This commit is contained in:
parent
fa8866990d
commit
fa20d734a2
4 changed files with 11 additions and 5 deletions
|
@ -1677,7 +1677,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
|||
}
|
||||
// Load mempool from disk
|
||||
if (auto* pool{chainman.ActiveChainstate().GetMempool()}) {
|
||||
LoadMempool(*pool, ShouldPersistMempool(args) ? MempoolPath(args) : fs::path{}, chainman.ActiveChainstate());
|
||||
LoadMempool(*pool, ShouldPersistMempool(args) ? MempoolPath(args) : fs::path{}, chainman.ActiveChainstate(), {});
|
||||
pool->SetLoadTried(!chainman.m_interrupt);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -36,11 +36,11 @@ namespace kernel {
|
|||
|
||||
static const uint64_t MEMPOOL_DUMP_VERSION = 1;
|
||||
|
||||
bool LoadMempool(CTxMemPool& pool, const fs::path& load_path, Chainstate& active_chainstate, FopenFn mockable_fopen_function)
|
||||
bool LoadMempool(CTxMemPool& pool, const fs::path& load_path, Chainstate& active_chainstate, ImportMempoolOptions&& opts)
|
||||
{
|
||||
if (load_path.empty()) return false;
|
||||
|
||||
FILE* filestr{mockable_fopen_function(load_path, "rb")};
|
||||
FILE* filestr{opts.mockable_fopen_function(load_path, "rb")};
|
||||
CAutoFile file(filestr, SER_DISK, CLIENT_VERSION);
|
||||
if (file.IsNull()) {
|
||||
LogPrintf("Failed to open mempool file from disk. Continuing anyway.\n");
|
||||
|
|
|
@ -17,10 +17,13 @@ bool DumpMempool(const CTxMemPool& pool, const fs::path& dump_path,
|
|||
fsbridge::FopenFn mockable_fopen_function = fsbridge::fopen,
|
||||
bool skip_file_commit = false);
|
||||
|
||||
struct ImportMempoolOptions {
|
||||
fsbridge::FopenFn mockable_fopen_function{fsbridge::fopen};
|
||||
};
|
||||
/** Import the file and attempt to add its contents to the mempool. */
|
||||
bool LoadMempool(CTxMemPool& pool, const fs::path& load_path,
|
||||
Chainstate& active_chainstate,
|
||||
fsbridge::FopenFn mockable_fopen_function = fsbridge::fopen);
|
||||
ImportMempoolOptions&& opts);
|
||||
|
||||
} // namespace kernel
|
||||
|
||||
|
|
|
@ -48,7 +48,10 @@ FUZZ_TARGET(validation_load_mempool, .init = initialize_validation_load_mempool)
|
|||
auto fuzzed_fopen = [&](const fs::path&, const char*) {
|
||||
return fuzzed_file_provider.open();
|
||||
};
|
||||
(void)LoadMempool(pool, MempoolPath(g_setup->m_args), chainstate, fuzzed_fopen);
|
||||
(void)LoadMempool(pool, MempoolPath(g_setup->m_args), chainstate,
|
||||
{
|
||||
.mockable_fopen_function = fuzzed_fopen,
|
||||
});
|
||||
pool.SetLoadTried(true);
|
||||
(void)DumpMempool(pool, MempoolPath(g_setup->m_args), fuzzed_fopen, true);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue