Don't overwrite validation state with corruption check
commit116419e58dddef8fe3ff9806a1d8ceebe64ae3e6
authorAlex Morcos <morcos@chaincode.com>
Tue, 10 Jan 2017 21:53:10 +0000 (10 16:53 -0500)
committerAlex Morcos <morcos@chaincode.com>
Tue, 10 Jan 2017 21:53:10 +0000 (10 16:53 -0500)
tree9e20acef8fdad52ff5671eb80574756196840b35
parent5754e0341b7c033d4caf99534aca47e9981bd7ed
Don't overwrite validation state with corruption check

AcceptToMemoryPool has several classes of return false statements.
- return state.Invalid or state.DoS directly itself
- return false and set fMissingInputs (state is valid)
- return false and state is set by failed CheckTransaction
- return false and state is set by failed CheckInputs.

This commit patches the last case where the state variable was reused for additional calls to CheckInputs to identify witness stripping as cause of validation failure.  After this commit, it should be the case that if !fMissingInputs, state is always Invalid if AcceptToMemoryPool returns false.
src/validation.cpp