diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2016-04-06 10:27:51 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2016-04-07 13:00:17 +0200 |
commit | 4226aacdba7d0e1e22555dac69363b3b460a166b (patch) | |
tree | 37dc8d400385cc671b4040ee149efb9a57b03acb | |
parent | c2106543fe017d443c2e50daf3dd1d42e6ec35a2 (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
-rw-r--r-- | src/main.cpp | 2 |
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; |