Take mempool locks when doing compact block RPC calls touching mempool

This commit is contained in:
Gregory Sanders 2019-10-09 12:11:52 -04:00
parent e66aca4d55
commit 244cccd09b

View file

@ -1245,6 +1245,7 @@ UniValue consumecompactsketch(const JSONRPCRequest& request)
CBlockHeaderAndShortTxIDs cmpctblock; CBlockHeaderAndShortTxIDs cmpctblock;
ssBlock >> cmpctblock; ssBlock >> cmpctblock;
LOCK(mempool.cs);
PartiallyDownloadedBlock partialBlock(&mempool); PartiallyDownloadedBlock partialBlock(&mempool);
const std::vector<std::pair<uint256, CTransactionRef>> dummy; const std::vector<std::pair<uint256, CTransactionRef>> dummy;
ReadStatus status = partialBlock.InitData(cmpctblock, dummy); ReadStatus status = partialBlock.InitData(cmpctblock, dummy);
@ -1376,6 +1377,7 @@ UniValue finalizecompactblock(const JSONRPCRequest& request)
found.insert(found.end(), transactions.txn.begin(), transactions.txn.end()); found.insert(found.end(), transactions.txn.begin(), transactions.txn.end());
// Now construct the final block! // Now construct the final block!
LOCK(mempool.cs);
PartiallyDownloadedBlock partialBlock(&mempool); PartiallyDownloadedBlock partialBlock(&mempool);
const std::vector<std::pair<uint256, CTransactionRef>> dummy; const std::vector<std::pair<uint256, CTransactionRef>> dummy;