aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2016-04-06 10:27:51 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2016-04-07 13:00:17 +0200
commit4226aacdba7d0e1e22555dac69363b3b460a166b (patch)
tree37dc8d400385cc671b4040ee149efb9a57b03acb /src/main.cpp
parentc2106543fe017d443c2e50daf3dd1d42e6ec35a2 (diff)
init: allow shutdown during 'Activating best chain...'
Two-line patch to make it possible to shut down bitcoind cleanly during the initial ActivateBestChain. Fixes #6459 (among other complaints). To reproduce: - shutdown bitcoind - copy chainstate - start bitcoind - let the chain sync a bit - shutdown bitcoind - copy back old chainstate - start bitcoind - bitcoind will catch up with all blocks during Init() (the `boost::this_thread::interruption_point` / `ShutdownRequested()` dance is ugly, this should be refactored all over bitcoind at some point when moving from boost::threads to c++11 threads, but it works...) Github-Pull: #7821 Rebased-From: 07398e8e9d2ef807e63abd0978a6e98549bdf271
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 14f70cdf5f..27d8a4a17d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -2867,6 +2867,8 @@ bool ActivateBestChain(CValidationState &state, const CChainParams& chainparams,
CBlockIndex *pindexMostWork = NULL;
do {
boost::this_thread::interruption_point();
+ if (ShutdownRequested())
+ break;
CBlockIndex *pindexNewTip = NULL;
const CBlockIndex *pindexFork;