aboutsummaryrefslogtreecommitdiff
path: root/src/validation.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <[email protected]>2018-09-10 18:19:02 +0200
committerWladimir J. van der Laan <[email protected]>2018-09-10 18:32:00 +0200
commite0a4f9de7fbb675dcc7207f91b60b66f14dc227a (patch)
tree9114fd91d68206ce0079ce6b81b21dd063990dbe /src/validation.cpp
parentMerge #14008: Preserve a format of RPC command definitions (diff)
parenttx pool: Use class methods to hide raw map iterator impl details (diff)
downloaddiscoin-e0a4f9de7fbb675dcc7207f91b60b66f14dc227a.tar.xz
discoin-e0a4f9de7fbb675dcc7207f91b60b66f14dc227a.zip
Merge #13793: tx pool: Use class methods to hide raw map iterator impl details
faa1a749428a195af784633eb78e1df5d6a0e875 tx pool: Use class methods to hide raw map iterator impl details (MarcoFalke) Pull request description: ATMP et al would often use map iterator implementation details such as `end()` or `find()`, which is acceptable in current code. However, this not only makes it impossible to turn the maps into private members in the future but also makes it harder to replace the maps with different data structures. This is required for and split off of #13804 Tree-SHA512: 4f9017fd1d98d9df49d25bba92655a4a97755eea161fd1cbb565ceb81bbc2b4924129d214f8a29563a77e3d8eef85a67c81245ecdc9a9e5292d419922a93cb88
Diffstat (limited to 'src/validation.cpp')
-rw-r--r--src/validation.cpp21
1 files changed, 6 insertions, 15 deletions
diff --git a/src/validation.cpp b/src/validation.cpp
index 7ec0c6a96..2ad242261 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -602,10 +602,8 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
std::set<uint256> setConflicts;
for (const CTxIn &txin : tx.vin)
{
- auto itConflicting = pool.mapNextTx.find(txin.prevout);
- if (itConflicting != pool.mapNextTx.end())
- {
- const CTransaction *ptxConflicting = itConflicting->second;
+ const CTransaction* ptxConflicting = pool.GetConflictTx(txin.prevout);
+ if (ptxConflicting) {
if (!setConflicts.count(ptxConflicting->GetHash()))
{
// Allow opt-out of transaction replacement by setting
@@ -786,16 +784,8 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
CFeeRate newFeeRate(nModifiedFees, nSize);
std::set<uint256> setConflictsParents;
const int maxDescendantsToVisit = 100;
- CTxMemPool::setEntries setIterConflicting;
- for (const uint256 &hashConflicting : setConflicts)
- {
- CTxMemPool::txiter mi = pool.mapTx.find(hashConflicting);
- if (mi == pool.mapTx.end())
- continue;
-
- // Save these to avoid repeated lookups
- setIterConflicting.insert(mi);
-
+ const CTxMemPool::setEntries setIterConflicting = pool.GetIterSet(setConflicts);
+ for (const auto& mi : setIterConflicting) {
// Don't allow the replacement to reduce the feerate of the
// mempool.
//
@@ -861,11 +851,12 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
// Rather than check the UTXO set - potentially expensive -
// it's cheaper to just check if the new input refers to a
// tx that's in the mempool.
- if (pool.mapTx.find(tx.vin[j].prevout.hash) != pool.mapTx.end())
+ if (pool.exists(tx.vin[j].prevout.hash)) {
return state.DoS(0, false,
REJECT_NONSTANDARD, "replacement-adds-unconfirmed", false,
strprintf("replacement %s adds unconfirmed input, idx %d",
hash.ToString(), j));
+ }
}
}