aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2013-08-05 01:53:17 -0700
committerGavin Andresen <gavinandresen@gmail.com>2013-08-05 01:53:17 -0700
commit15047f5af0d13844d0034626492379a421c211ca (patch)
tree2abcc044e721ed957799bd8818d47d3465874c02
parent2af267c150579c5defc3431e6d0d1ee4d6e7af44 (diff)
parent9bf2a4aba2c22dc451ce000f7ef081b3d3562b84 (diff)
Merge pull request #2851 from TheBlueMatt/master
Prepare for mempool testing in pull-tester and fix multi-block transaction resurrection
-rw-r--r--src/checkpoints.cpp17
-rw-r--r--src/main.cpp12
2 files changed, 21 insertions, 8 deletions
diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp
index ba29e2463e..0716cfca31 100644
--- a/src/checkpoints.cpp
+++ b/src/checkpoints.cpp
@@ -67,11 +67,24 @@ namespace Checkpoints
300
};
+ static MapCheckpoints mapCheckpointsRegtest =
+ boost::assign::map_list_of
+ ( 0, uint256("0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"))
+ ;
+ static const CCheckpointData dataRegtest = {
+ &mapCheckpointsRegtest,
+ 0,
+ 0,
+ 0
+ };
+
const CCheckpointData &Checkpoints() {
- if (TestNet())
+ if (Params().NetworkID() == CChainParams::TESTNET)
return dataTestnet;
- else
+ else if (Params().NetworkID() == CChainParams::MAIN)
return data;
+ else
+ return dataRegtest;
}
bool CheckBlock(int nHeight, const uint256& hash)
diff --git a/src/main.cpp b/src/main.cpp
index ac3ee06f6f..50cff7f51d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -810,9 +810,9 @@ bool CTxMemPool::accept(CValidationState &state, CTransaction &tx, bool fLimitFr
if ((int64)tx.nLockTime > std::numeric_limits<int>::max())
return error("CTxMemPool::accept() : not accepting nLockTime beyond 2038 yet");
- // Rather not work on nonstandard transactions (unless -testnet)
+ // Rather not work on nonstandard transactions (unless -testnet/-regtest)
string reason;
- if (!TestNet() && !IsStandardTx(tx, reason))
+ if (Params().NetworkID() == CChainParams::MAIN && !IsStandardTx(tx, reason))
return error("CTxMemPool::accept() : nonstandard transaction: %s",
reason.c_str());
@@ -888,7 +888,7 @@ bool CTxMemPool::accept(CValidationState &state, CTransaction &tx, bool fLimitFr
}
// Check for non-standard pay-to-script-hash in inputs
- if (!TestNet() && !AreInputsStandard(tx, view))
+ if (Params().NetworkID() == CChainParams::MAIN && !AreInputsStandard(tx, view))
return error("CTxMemPool::accept() : nonstandard transaction input");
// Note: if you modify this code to accept non-standard transactions, then
@@ -1938,7 +1938,7 @@ bool SetBestChain(CValidationState &state, CBlockIndex* pindexNew)
}
// Disconnect shorter branch
- vector<CTransaction> vResurrect;
+ list<CTransaction> vResurrect;
BOOST_FOREACH(CBlockIndex* pindex, vDisconnect) {
CBlock block;
if (!ReadBlockFromDisk(block, pindex))
@@ -1952,9 +1952,9 @@ bool SetBestChain(CValidationState &state, CBlockIndex* pindexNew)
// Queue memory transactions to resurrect.
// We only do this for blocks after the last checkpoint (reorganisation before that
// point should only happen with -reindex/-loadblock, or a misbehaving peer.
- BOOST_FOREACH(const CTransaction& tx, block.vtx)
+ BOOST_REVERSE_FOREACH(const CTransaction& tx, block.vtx)
if (!tx.IsCoinBase() && pindex->nHeight > Checkpoints::GetTotalBlocksEstimate())
- vResurrect.push_back(tx);
+ vResurrect.push_front(tx);
}
// Connect longer branch