@ -1250,7 +1250,6 @@ bool ConnectBestBlock(CValidationState &state) {
BOOST_FOREACH ( CBlockIndex * pindexSwitch , vAttach ) {
if ( fRequestShutdown )
break ;
CValidationState state ;
try {
if ( ! SetBestChain ( state , pindexSwitch ) )
return false ;
@ -1405,7 +1404,7 @@ bool CTransaction::CheckInputs(CValidationState &state, CCoinsViewCache &inputs,
}
if ( nValueIn < GetValueOut ( ) )
return state . DoS ( 100 , error ( " Check t Inputs() : %s value in < value out" , GetHash ( ) . ToString ( ) . substr ( 0 , 10 ) . c_str ( ) ) ) ;
return state . DoS ( 100 , error ( " Check Inputs() : %s value in < value out" , GetHash ( ) . ToString ( ) . substr ( 0 , 10 ) . c_str ( ) ) ) ;
// Tally transaction fees
int64 nTxFee = nValueIn - GetValueOut ( ) ;
@ -2259,7 +2258,9 @@ bool ProcessBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDiskBl
+ + mi )
{
CBlock * pblockOrphan = ( * mi ) . second ;
if ( pblockOrphan - > AcceptBlock ( state ) )
// Use a dummy CValidationState so someone can't setup nodes to counter-DoS based on orphan resolution (that is, feeding people an invalid block based on LegitBlockX in order to get anyone relaying LegitBlockX banned)
CValidationState stateDummy ;
if ( pblockOrphan - > AcceptBlock ( stateDummy ) )
vWorkQueue . push_back ( pblockOrphan - > GetHash ( ) ) ;
mapOrphanBlocks . erase ( pblockOrphan - > GetHash ( ) ) ;
delete pblockOrphan ;
@ -3453,8 +3454,10 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
CDataStream ( vMsg ) > > tx ;
CInv inv ( MSG_TX , tx . GetHash ( ) ) ;
bool fMissingInputs2 = false ;
// Use a dummy CValidationState so someone can't setup nodes to counter-DoS based on orphan resolution (that is, feeding people an invalid transaction based on LegitTxX in order to get anyone relaying LegitTxX banned)
CValidationState stateDummy ;
if ( tx . AcceptToMemoryPool ( state , true , true , & fMissingInputs2 ) )
if ( tx . AcceptToMemoryPool ( state Dummy , true , true , & fMissingInputs2 ) )
{
printf ( " accepted orphan tx %s \n " , inv . hash . ToString ( ) . substr ( 0 , 10 ) . c_str ( ) ) ;
RelayTransaction ( tx , inv . hash , vMsg ) ;