|
|
|
@ -351,7 +351,7 @@ bool CheckSequenceLocks(const CTransaction &tx, int flags, LockPoints* lp, bool
@@ -351,7 +351,7 @@ bool CheckSequenceLocks(const CTransaction &tx, int flags, LockPoints* lp, bool
|
|
|
|
|
|
|
|
|
|
CBlockIndex* tip = chainActive.Tip(); |
|
|
|
|
assert(tip != nullptr); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CBlockIndex index; |
|
|
|
|
index.pprev = tip; |
|
|
|
|
// CheckSequenceLocks() uses chainActive.Height()+1 to evaluate
|
|
|
|
@ -2607,18 +2607,17 @@ bool CChainState::ActivateBestChain(CValidationState &state, const CChainParams&
@@ -2607,18 +2607,17 @@ bool CChainState::ActivateBestChain(CValidationState &state, const CChainParams&
|
|
|
|
|
assert(trace.pblock && trace.pindex); |
|
|
|
|
GetMainSignals().BlockConnected(trace.pblock, trace.pindex, trace.conflictedTxs); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// When we reach this point, we switched to a new tip (stored in pindexNewTip).
|
|
|
|
|
|
|
|
|
|
// Notifications/callbacks that can run without cs_main
|
|
|
|
|
// Notify external listeners about the new tip.
|
|
|
|
|
// Enqueue while holding cs_main to ensure that UpdatedBlockTip is called in the order in which blocks are connected
|
|
|
|
|
GetMainSignals().UpdatedBlockTip(pindexNewTip, pindexFork, fInitialDownload); |
|
|
|
|
|
|
|
|
|
// Notify external listeners about the new tip.
|
|
|
|
|
GetMainSignals().UpdatedBlockTip(pindexNewTip, pindexFork, fInitialDownload); |
|
|
|
|
|
|
|
|
|
// Always notify the UI if a new block tip was connected
|
|
|
|
|
if (pindexFork != pindexNewTip) { |
|
|
|
|
uiInterface.NotifyBlockTip(fInitialDownload, pindexNewTip); |
|
|
|
|
// Always notify the UI if a new block tip was connected
|
|
|
|
|
if (pindexFork != pindexNewTip) { |
|
|
|
|
uiInterface.NotifyBlockTip(fInitialDownload, pindexNewTip); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// When we reach this point, we switched to a new tip (stored in pindexNewTip).
|
|
|
|
|
|
|
|
|
|
if (nStopAtHeight && pindexNewTip && pindexNewTip->nHeight >= nStopAtHeight) StartShutdown(); |
|
|
|
|
|
|
|
|
|