Merge #9511: Don't overwrite validation state with corruption check
116419e
Don't overwrite validation state with corruption check (Alex Morcos)
This commit is contained in:
commit
7884956414
1 changed files with 4 additions and 3 deletions
|
@ -921,12 +921,13 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState& state, const C
|
||||||
// SCRIPT_VERIFY_CLEANSTACK requires SCRIPT_VERIFY_WITNESS, so we
|
// SCRIPT_VERIFY_CLEANSTACK requires SCRIPT_VERIFY_WITNESS, so we
|
||||||
// need to turn both off, and compare against just turning off CLEANSTACK
|
// need to turn both off, and compare against just turning off CLEANSTACK
|
||||||
// to see if the failure is specifically due to witness validation.
|
// to see if the failure is specifically due to witness validation.
|
||||||
if (!tx.HasWitness() && CheckInputs(tx, state, view, true, scriptVerifyFlags & ~(SCRIPT_VERIFY_WITNESS | SCRIPT_VERIFY_CLEANSTACK), true, txdata) &&
|
CValidationState stateDummy; // Want reported failures to be from first CheckInputs
|
||||||
!CheckInputs(tx, state, view, true, scriptVerifyFlags & ~SCRIPT_VERIFY_CLEANSTACK, true, txdata)) {
|
if (!tx.HasWitness() && CheckInputs(tx, stateDummy, view, true, scriptVerifyFlags & ~(SCRIPT_VERIFY_WITNESS | SCRIPT_VERIFY_CLEANSTACK), true, txdata) &&
|
||||||
|
!CheckInputs(tx, stateDummy, view, true, scriptVerifyFlags & ~SCRIPT_VERIFY_CLEANSTACK, true, txdata)) {
|
||||||
// Only the witness is missing, so the transaction itself may be fine.
|
// Only the witness is missing, so the transaction itself may be fine.
|
||||||
state.SetCorruptionPossible();
|
state.SetCorruptionPossible();
|
||||||
}
|
}
|
||||||
return false;
|
return false; // state filled in by CheckInputs
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check again against just the consensus-critical mandatory script
|
// Check again against just the consensus-critical mandatory script
|
||||||
|
|
Loading…
Add table
Reference in a new issue