aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-04-13 10:52:40 +0200
committerMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-08-07 11:32:34 +0200
commitfa20d734a29ba50cd19b78cb4fe39a2d826131b7 (patch)
treed326beceeeee9488e3f53de8cf8224003a877e89
parentfa8866990dba7817427977bfe834efdb17114d37 (diff)
refactor: Add and use kernel::ImportMempoolOptions
This allows optional named arguments with default values.
-rw-r--r--src/init.cpp2
-rw-r--r--src/kernel/mempool_persist.cpp4
-rw-r--r--src/kernel/mempool_persist.h5
-rw-r--r--src/test/fuzz/validation_load_mempool.cpp5
4 files changed, 11 insertions, 5 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 97ce3c3909..32cf76bedf 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -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);
}
});
diff --git a/src/kernel/mempool_persist.cpp b/src/kernel/mempool_persist.cpp
index 030c0a2710..8c3d3d9c1f 100644
--- a/src/kernel/mempool_persist.cpp
+++ b/src/kernel/mempool_persist.cpp
@@ -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");
diff --git a/src/kernel/mempool_persist.h b/src/kernel/mempool_persist.h
index 23c396c0f0..ac558353b7 100644
--- a/src/kernel/mempool_persist.h
+++ b/src/kernel/mempool_persist.h
@@ -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
diff --git a/src/test/fuzz/validation_load_mempool.cpp b/src/test/fuzz/validation_load_mempool.cpp
index bfbede5094..5d020b4d59 100644
--- a/src/test/fuzz/validation_load_mempool.cpp
+++ b/src/test/fuzz/validation_load_mempool.cpp
@@ -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);
}