|
|
@ -1985,7 +1985,7 @@ bool static DisconnectTip(CValidationState &state) { |
|
|
|
BOOST_FOREACH(const CTransaction &tx, block.vtx) { |
|
|
|
BOOST_FOREACH(const CTransaction &tx, block.vtx) { |
|
|
|
// ignore validation errors in resurrected transactions
|
|
|
|
// ignore validation errors in resurrected transactions
|
|
|
|
list<CTransaction> removed; |
|
|
|
list<CTransaction> removed; |
|
|
|
CValidationState stateDummy; |
|
|
|
CValidationState stateDummy; |
|
|
|
if (!tx.IsCoinBase()) |
|
|
|
if (!tx.IsCoinBase()) |
|
|
|
if (!AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL)) |
|
|
|
if (!AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL)) |
|
|
|
mempool.remove(tx, removed, true); |
|
|
|
mempool.remove(tx, removed, true); |
|
|
@ -2213,7 +2213,6 @@ CBlockIndex* AddToBlockIndex(CBlockHeader& block) |
|
|
|
return pindexNew; |
|
|
|
return pindexNew; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Mark a block as having its data received and checked (up to BLOCK_VALID_TRANSACTIONS).
|
|
|
|
// Mark a block as having its data received and checked (up to BLOCK_VALID_TRANSACTIONS).
|
|
|
|
bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBlockIndex *pindexNew, const CDiskBlockPos& pos) |
|
|
|
bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBlockIndex *pindexNew, const CDiskBlockPos& pos) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -2246,7 +2245,6 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool FindBlockPos(CValidationState &state, CDiskBlockPos &pos, unsigned int nAddSize, unsigned int nHeight, uint64_t nTime, bool fKnown = false) |
|
|
|
bool FindBlockPos(CValidationState &state, CDiskBlockPos &pos, unsigned int nAddSize, unsigned int nHeight, uint64_t nTime, bool fKnown = false) |
|
|
|
{ |
|
|
|
{ |
|
|
|
bool fUpdatedLast = false; |
|
|
|
bool fUpdatedLast = false; |
|
|
@ -2341,7 +2339,6 @@ bool FindUndoPos(CValidationState &state, int nFile, CDiskBlockPos &pos, unsigne |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool CheckBlockHeader(const CBlockHeader& block, CValidationState& state, bool fCheckPOW) |
|
|
|
bool CheckBlockHeader(const CBlockHeader& block, CValidationState& state, bool fCheckPOW) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Check proof of work matches claimed amount
|
|
|
|
// Check proof of work matches claimed amount
|
|
|
@ -4455,8 +4452,8 @@ bool SendMessages(CNode* pto, bool fSendTrickle) |
|
|
|
// in flight for over two minutes, since we first had a chance to
|
|
|
|
// in flight for over two minutes, since we first had a chance to
|
|
|
|
// process an incoming block.
|
|
|
|
// process an incoming block.
|
|
|
|
int64_t nNow = GetTimeMicros(); |
|
|
|
int64_t nNow = GetTimeMicros(); |
|
|
|
if (!pto->fDisconnect && state.nBlocksInFlight && |
|
|
|
if (!pto->fDisconnect && state.nBlocksInFlight && |
|
|
|
state.nLastBlockReceive < state.nLastBlockProcess - BLOCK_DOWNLOAD_TIMEOUT*1000000 && |
|
|
|
state.nLastBlockReceive < state.nLastBlockProcess - BLOCK_DOWNLOAD_TIMEOUT*1000000 && |
|
|
|
state.vBlocksInFlight.front().nTime < state.nLastBlockProcess - 2*BLOCK_DOWNLOAD_TIMEOUT*1000000) { |
|
|
|
state.vBlocksInFlight.front().nTime < state.nLastBlockProcess - 2*BLOCK_DOWNLOAD_TIMEOUT*1000000) { |
|
|
|
LogPrintf("Peer %s is stalling block download, disconnecting\n", state.name.c_str()); |
|
|
|
LogPrintf("Peer %s is stalling block download, disconnecting\n", state.name.c_str()); |
|
|
|
pto->fDisconnect = true; |
|
|
|
pto->fDisconnect = true; |
|
|
|