diff --git a/src/init.cpp b/src/init.cpp --- a/src/init.cpp +++ b/src/init.cpp @@ -1369,6 +1369,10 @@ LogPrintf("Reindexing block file blk%05u.dat...\n", (unsigned int)nFile); LoadExternalBlockFile(config, file, &pos); + if (ShutdownRequested()) { + LogPrintf("Shutdown requested. Exit %s\n", __func__); + return; + } nFile++; } pblocktree->WriteReindexing(false); @@ -1385,6 +1389,10 @@ if (file) { LogPrintf("Importing blocks file %s...\n", path.string()); LoadExternalBlockFile(config, file); + if (ShutdownRequested()) { + LogPrintf("Shutdown requested. Exit %s\n", __func__); + return; + } } else { LogPrintf("Warning: Could not open blocks file %s\n", path.string()); diff --git a/src/validation.h b/src/validation.h --- a/src/validation.h +++ b/src/validation.h @@ -211,7 +211,7 @@ /** * Import blocks from an external file. */ -bool LoadExternalBlockFile(const Config &config, FILE *fileIn, +void LoadExternalBlockFile(const Config &config, FILE *fileIn, FlatFilePos *dbp = nullptr); /** diff --git a/src/validation.cpp b/src/validation.cpp --- a/src/validation.cpp +++ b/src/validation.cpp @@ -5239,7 +5239,7 @@ return ::ChainstateActive().LoadGenesisBlock(chainparams); } -bool LoadExternalBlockFile(const Config &config, FILE *fileIn, +void LoadExternalBlockFile(const Config &config, FILE *fileIn, FlatFilePos *dbp) { // Map of disk positions for blocks with unknown parent (only used for // reindex) @@ -5257,7 +5257,9 @@ CLIENT_VERSION); uint64_t nRewind = blkdat.GetPos(); while (!blkdat.eof()) { - boost::this_thread::interruption_point(); + if (ShutdownRequested()) { + return; + } blkdat.SetPos(nRewind); // Start one byte further next time, in case of failure. @@ -5394,12 +5396,8 @@ AbortNode(std::string("System error: ") + e.what()); } - if (nLoaded > 0) { - LogPrintf("Loaded %i blocks from external file in %dms\n", nLoaded, - GetTimeMillis() - nStart); - } - - return nLoaded > 0; + LogPrintf("Loaded %i blocks from external file in %dms\n", nLoaded, + GetTimeMillis() - nStart); } void CChainState::CheckBlockIndex(const Consensus::Params &consensusParams) {