aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Schnelli <dev@jonasschnelli.ch>2018-04-13 21:20:29 +0200
committerJonas Schnelli <dev@jonasschnelli.ch>2018-08-02 08:10:49 +0200
commitaf5fa82b676a36e60eda080ca0a946bdfffefd49 (patch)
treeb2812f7f0877c3a4a762bda5995b480f193b3c47
parentf030410e88f11c5ff1ce6c80b463a1c7f6d39830 (diff)
downloadbitcoin-af5fa82b676a36e60eda080ca0a946bdfffefd49.tar.xz
Allow quicker shutdowns during LoadBlockIndex()
-rw-r--r--src/init.cpp1
-rw-r--r--src/txdb.cpp1
-rw-r--r--src/validation.cpp1
3 files changed, 3 insertions, 0 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 18402ef5d7..feb5ff2c5e 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1468,6 +1468,7 @@ bool AppInitMain()
// Note that it also sets fReindex based on the disk flag!
// From here on out fReindex and fReset mean something different!
if (!LoadBlockIndex(chainparams)) {
+ if (ShutdownRequested()) break;
strLoadError = _("Error loading block database");
break;
}
diff --git a/src/txdb.cpp b/src/txdb.cpp
index cbea550739..eda959e1a1 100644
--- a/src/txdb.cpp
+++ b/src/txdb.cpp
@@ -255,6 +255,7 @@ bool CBlockTreeDB::LoadBlockIndexGuts(const Consensus::Params& consensusParams,
// Load mapBlockIndex
while (pcursor->Valid()) {
boost::this_thread::interruption_point();
+ if (ShutdownRequested()) return false;
std::pair<char, uint256> key;
if (pcursor->GetKey(key) && key.first == DB_BLOCK_INDEX) {
CDiskBlockIndex diskindex;
diff --git a/src/validation.cpp b/src/validation.cpp
index 702a8d7e05..563cd59382 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -3855,6 +3855,7 @@ bool CChainState::LoadBlockIndex(const Consensus::Params& consensus_params, CBlo
sort(vSortedByHeight.begin(), vSortedByHeight.end());
for (const std::pair<int, CBlockIndex*>& item : vSortedByHeight)
{
+ if (ShutdownRequested()) return false;
CBlockIndex* pindex = item.second;
pindex->nChainWork = (pindex->pprev ? pindex->pprev->nChainWork : 0) + GetBlockProof(*pindex);
pindex->nTimeMax = (pindex->pprev ? std::max(pindex->pprev->nTimeMax, pindex->nTime) : pindex->nTime);