mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 15:09:59 +01:00
Merge #16262: rpc: Allow shutdown while in generateblocks
3b9bf0eb0erpc: Allow shutdown while in generateblocks (Patrick Strateman) Pull request description: By checking the shutdown flag every loop we can use the entire 32 bit nonce space instead of breaking every 16 bits to check the flag. This is possible now because the shutdown flag is an atomic where before it was controlled by a condition variable and lock. ACKs for top commit: kallewoof: Re-ACK3b9bf0eTree-SHA512: d0664201a55215130c2e9199a31fb81361daf4102a65cb3418984fd61cb98bfb9136d9ee8d23a85d57e50051f9bb0059bd71fe0488a17f63c38ea5caa6004504
This commit is contained in:
@@ -103,7 +103,6 @@ static UniValue getnetworkhashps(const JSONRPCRequest& request)
|
||||
|
||||
static UniValue generateBlocks(const CScript& coinbase_script, int nGenerate, uint64_t nMaxTries)
|
||||
{
|
||||
static const int nInnerLoopCount = 0x10000;
|
||||
int nHeightEnd = 0;
|
||||
int nHeight = 0;
|
||||
|
||||
@@ -124,14 +123,14 @@ static UniValue generateBlocks(const CScript& coinbase_script, int nGenerate, ui
|
||||
LOCK(cs_main);
|
||||
IncrementExtraNonce(pblock, ::ChainActive().Tip(), nExtraNonce);
|
||||
}
|
||||
while (nMaxTries > 0 && pblock->nNonce < nInnerLoopCount && !CheckProofOfWork(pblock->GetHash(), pblock->nBits, Params().GetConsensus())) {
|
||||
while (nMaxTries > 0 && pblock->nNonce < std::numeric_limits<uint32_t>::max() && !CheckProofOfWork(pblock->GetHash(), pblock->nBits, Params().GetConsensus()) && !ShutdownRequested()) {
|
||||
++pblock->nNonce;
|
||||
--nMaxTries;
|
||||
}
|
||||
if (nMaxTries == 0) {
|
||||
if (nMaxTries == 0 || ShutdownRequested()) {
|
||||
break;
|
||||
}
|
||||
if (pblock->nNonce == nInnerLoopCount) {
|
||||
if (pblock->nNonce == std::numeric_limits<uint32_t>::max()) {
|
||||
continue;
|
||||
}
|
||||
std::shared_ptr<const CBlock> shared_pblock = std::make_shared<const CBlock>(*pblock);
|
||||
|
||||
Reference in New Issue
Block a user