|
|
|
@ -2355,7 +2355,7 @@ bool CheckBlock(const CBlock& block, CValidationState& state, bool fCheckPOW, bo
@@ -2355,7 +2355,7 @@ bool CheckBlock(const CBlock& block, CValidationState& state, bool fCheckPOW, bo
|
|
|
|
|
uniqueTx.insert(block.GetTxHash(i)); |
|
|
|
|
} |
|
|
|
|
if (uniqueTx.size() != block.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, block.vtx) |
|
|
|
@ -3783,7 +3783,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
@@ -3783,7 +3783,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
|
|
|
|
LOCK(cs_main); |
|
|
|
|
|
|
|
|
|
CValidationState state; |
|
|
|
|
if (ProcessBlock(state, pfrom, &block)) |
|
|
|
|
if (ProcessBlock(state, pfrom, &block) || state.CorruptionPossible()) |
|
|
|
|
mapAlreadyAskedFor.erase(inv); |
|
|
|
|
int nDoS = 0; |
|
|
|
|
if (state.IsInvalid(nDoS)) |
|
|
|
|