|
|
|
@ -2131,7 +2131,7 @@ bool CBlock::CheckBlock(CValidationState &state, bool fCheckPOW, bool fCheckMerk
@@ -2131,7 +2131,7 @@ bool CBlock::CheckBlock(CValidationState &state, bool fCheckPOW, bool fCheckMerk
|
|
|
|
|
uniqueTx.insert(GetTxHash(i)); |
|
|
|
|
} |
|
|
|
|
if (uniqueTx.size() != vtx.size()) |
|
|
|
|
return state.DoS(100, error("CheckBlock() : duplicate transaction")); |
|
|
|
|
return state.DoS(100, error("CheckBlock() : duplicate transaction"), true); |
|
|
|
|
|
|
|
|
|
unsigned int nSigOps = 0; |
|
|
|
|
BOOST_FOREACH(const CTransaction& tx, vtx) |
|
|
|
@ -3630,7 +3630,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
@@ -3630,7 +3630,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
|
|
|
|
pfrom->AddInventoryKnown(inv); |
|
|
|
|
|
|
|
|
|
CValidationState state; |
|
|
|
|
if (ProcessBlock(state, pfrom, &block)) |
|
|
|
|
if (ProcessBlock(state, pfrom, &block) || state.CorruptionPossible()) |
|
|
|
|
mapAlreadyAskedFor.erase(inv); |
|
|
|
|
int nDoS = 0; |
|
|
|
|
if (state.IsInvalid(nDoS)) |
|
|
|
|