Use REJECT_DUPLICATE for already known and conflicted txn
This commit is contained in:
parent
7cc2c670e3
commit
d9bec888f1
2 changed files with 7 additions and 9 deletions
|
@ -427,8 +427,9 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState& state, const C
|
||||||
return state.DoS(0, false, REJECT_NONSTANDARD, "non-final");
|
return state.DoS(0, false, REJECT_NONSTANDARD, "non-final");
|
||||||
|
|
||||||
// is it already in the memory pool?
|
// is it already in the memory pool?
|
||||||
if (pool.exists(hash))
|
if (pool.exists(hash)) {
|
||||||
return state.Invalid(false, REJECT_ALREADY_KNOWN, "txn-already-in-mempool");
|
return state.Invalid(false, REJECT_DUPLICATE, "txn-already-in-mempool");
|
||||||
|
}
|
||||||
|
|
||||||
// Check for conflicts with in-memory transactions
|
// Check for conflicts with in-memory transactions
|
||||||
std::set<uint256> setConflicts;
|
std::set<uint256> setConflicts;
|
||||||
|
@ -466,8 +467,9 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState& state, const C
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (fReplacementOptOut)
|
if (fReplacementOptOut) {
|
||||||
return state.Invalid(false, REJECT_CONFLICT, "txn-mempool-conflict");
|
return state.Invalid(false, REJECT_DUPLICATE, "txn-mempool-conflict");
|
||||||
|
}
|
||||||
|
|
||||||
setConflicts.insert(ptxConflicting->GetHash());
|
setConflicts.insert(ptxConflicting->GetHash());
|
||||||
}
|
}
|
||||||
|
@ -494,7 +496,7 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState& state, const C
|
||||||
if (!had_coin_in_cache) {
|
if (!had_coin_in_cache) {
|
||||||
coins_to_uncache.push_back(outpoint);
|
coins_to_uncache.push_back(outpoint);
|
||||||
}
|
}
|
||||||
return state.Invalid(false, REJECT_ALREADY_KNOWN, "txn-already-known");
|
return state.Invalid(false, REJECT_DUPLICATE, "txn-already-known");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -509,10 +509,6 @@ int32_t ComputeBlockVersion(const CBlockIndex* pindexPrev, const Consensus::Para
|
||||||
static const unsigned int REJECT_INTERNAL = 0x100;
|
static const unsigned int REJECT_INTERNAL = 0x100;
|
||||||
/** Too high fee. Can not be triggered by P2P transactions */
|
/** Too high fee. Can not be triggered by P2P transactions */
|
||||||
static const unsigned int REJECT_HIGHFEE = 0x100;
|
static const unsigned int REJECT_HIGHFEE = 0x100;
|
||||||
/** Transaction is already known (either in mempool or blockchain) */
|
|
||||||
static const unsigned int REJECT_ALREADY_KNOWN = 0x101;
|
|
||||||
/** Transaction conflicts with a transaction already known */
|
|
||||||
static const unsigned int REJECT_CONFLICT = 0x102;
|
|
||||||
|
|
||||||
/** Get block file info entry for one block file */
|
/** Get block file info entry for one block file */
|
||||||
CBlockFileInfo* GetBlockFileInfo(size_t n);
|
CBlockFileInfo* GetBlockFileInfo(size_t n);
|
||||||
|
|
Loading…
Reference in a new issue