mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-05-15 12:40:41 +02:00
Fix csBestBlock/cvBlockChange waiting in rpc/mining
This commit is contained in:
parent
ad960f5771
commit
45dd135039
@ -471,7 +471,7 @@ UniValue getblocktemplate(const JSONRPCRequest& request)
|
|||||||
checktxtime = std::chrono::steady_clock::now() + std::chrono::minutes(1);
|
checktxtime = std::chrono::steady_clock::now() + std::chrono::minutes(1);
|
||||||
|
|
||||||
WaitableLock lock(csBestBlock);
|
WaitableLock lock(csBestBlock);
|
||||||
while (chainActive.Tip()->GetBlockHash() == hashWatchedChain && IsRPCRunning())
|
while (hashBestBlock == hashWatchedChain && IsRPCRunning())
|
||||||
{
|
{
|
||||||
if (cvBlockChange.wait_until(lock, checktxtime) == std::cv_status::timeout)
|
if (cvBlockChange.wait_until(lock, checktxtime) == std::cv_status::timeout)
|
||||||
{
|
{
|
||||||
|
@ -204,6 +204,7 @@ CChain& chainActive = g_chainstate.chainActive;
|
|||||||
CBlockIndex *pindexBestHeader = nullptr;
|
CBlockIndex *pindexBestHeader = nullptr;
|
||||||
CWaitableCriticalSection csBestBlock;
|
CWaitableCriticalSection csBestBlock;
|
||||||
CConditionVariable cvBlockChange;
|
CConditionVariable cvBlockChange;
|
||||||
|
uint256 hashBestBlock;
|
||||||
int nScriptCheckThreads = 0;
|
int nScriptCheckThreads = 0;
|
||||||
std::atomic_bool fImporting(false);
|
std::atomic_bool fImporting(false);
|
||||||
std::atomic_bool fReindex(false);
|
std::atomic_bool fReindex(false);
|
||||||
@ -2195,7 +2196,11 @@ void static UpdateTip(const CBlockIndex *pindexNew, const CChainParams& chainPar
|
|||||||
// New best block
|
// New best block
|
||||||
mempool.AddTransactionsUpdated(1);
|
mempool.AddTransactionsUpdated(1);
|
||||||
|
|
||||||
|
{
|
||||||
|
WaitableLock lock(csBestBlock);
|
||||||
|
hashBestBlock = pindexNew->GetBlockHash();
|
||||||
cvBlockChange.notify_all();
|
cvBlockChange.notify_all();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<std::string> warningMessages;
|
std::vector<std::string> warningMessages;
|
||||||
if (!IsInitialBlockDownload())
|
if (!IsInitialBlockDownload())
|
||||||
|
@ -166,6 +166,7 @@ extern uint64_t nLastBlockWeight;
|
|||||||
extern const std::string strMessageMagic;
|
extern const std::string strMessageMagic;
|
||||||
extern CWaitableCriticalSection csBestBlock;
|
extern CWaitableCriticalSection csBestBlock;
|
||||||
extern CConditionVariable cvBlockChange;
|
extern CConditionVariable cvBlockChange;
|
||||||
|
extern uint256 hashBestBlock;
|
||||||
extern std::atomic_bool fImporting;
|
extern std::atomic_bool fImporting;
|
||||||
extern std::atomic_bool fReindex;
|
extern std::atomic_bool fReindex;
|
||||||
extern int nScriptCheckThreads;
|
extern int nScriptCheckThreads;
|
||||||
|
Loading…
Reference in New Issue
Block a user