Convert chain RuleError to TxRuleError in mempool.

When a transaction is being checked for acceptance into the transation
memory pool, it makes use of a chain function to ensure the invariant rules
for what transactions are allowed into a block are not violated.  That
function returns a btcchain.RuleError if rules are violated.  However,
since this code path is tailored to free-standing transactions, the error
needs to be converted to a TxRuleError so the caller can properly detect
the transaction as a rejected transaction instead of treating it like an
real error.
This commit is contained in:
Dave Collins 2013-11-15 11:59:32 -06:00
parent 166f8c9ae5
commit 527a08eb14

View file

@ -779,6 +779,9 @@ func (mp *txMemPool) maybeAcceptTransaction(tx *btcutil.Tx, isOrphan *bool) erro
// used later. // used later.
txFee, err := btcchain.CheckTransactionInputs(tx, nextBlockHeight, txStore) txFee, err := btcchain.CheckTransactionInputs(tx, nextBlockHeight, txStore)
if err != nil { if err != nil {
if _, ok := err.(btcchain.RuleError); ok {
return TxRuleError(err.Error())
}
return err return err
} }