Added critical section lock in isSpent

This commit is contained in:
Braydon Fuller 2015-10-02 14:09:29 -04:00
parent 76d466b29b
commit 7070d4c74d
1 changed files with 12 additions and 9 deletions

View File

@ -1231,17 +1231,20 @@ NAN_METHOD(IsSpent) {
const uint256 txid = uint256S(argStr); const uint256 txid = uint256S(argStr);
int outputIndex = info[1]->IntegerValue(); int outputIndex = info[1]->IntegerValue();
CCoinsView dummy; {
CCoinsViewCache view(&dummy); LOCK(mempool.cs);
CCoinsView dummy;
CCoinsViewCache view(&dummy);
CCoinsViewMemPool viewMemPool(pcoinsTip, mempool); CCoinsViewMemPool viewMemPool(pcoinsTip, mempool);
view.SetBackend(viewMemPool); view.SetBackend(viewMemPool);
if (view.HaveCoins(txid)) { if (view.HaveCoins(txid)) {
const CCoins* coins = view.AccessCoins(txid); const CCoins* coins = view.AccessCoins(txid);
if (coins && coins->IsAvailable(outputIndex)) { if (coins && coins->IsAvailable(outputIndex)) {
info.GetReturnValue().Set(New<Boolean>(false)); info.GetReturnValue().Set(New<Boolean>(false));
return; return;
}
} }
} }
info.GetReturnValue().Set(New<Boolean>(true)); info.GetReturnValue().Set(New<Boolean>(true));