Ban incoming invalid transactions (#4037)

This commit is contained in:
Arkadiy Paronyan
2019-11-07 12:03:23 +01:00
committed by Gavin Wood
parent 3a7b1b9da5
commit 8de6279300
2 changed files with 13 additions and 7 deletions
@@ -342,14 +342,14 @@ impl<B: ChainApi> Pool<B> {
) -> impl Future<Output=ValidatedTransactionFor<B>> {
let (hash, bytes) = self.validated_pool.api().hash_and_length(&xt);
if !force && self.validated_pool.is_banned(&hash) {
return Either::Left(ready(ValidatedTransaction::Invalid(error::Error::TemporarilyBanned.into())))
return Either::Left(ready(ValidatedTransaction::Invalid(hash, error::Error::TemporarilyBanned.into())))
}
Either::Right(self.validated_pool.api().validate_transaction(block_id, xt.clone())
.then(move |validation_result| ready(match validation_result {
Ok(validity) => match validity {
Ok(validity) => if validity.provides.is_empty() {
ValidatedTransaction::Invalid(error::Error::NoTagsProvided.into())
ValidatedTransaction::Invalid(hash, error::Error::NoTagsProvided.into())
} else {
ValidatedTransaction::Valid(base::Transaction {
data: xt,
@@ -365,11 +365,11 @@ impl<B: ChainApi> Pool<B> {
})
},
Err(TransactionValidityError::Invalid(e)) =>
ValidatedTransaction::Invalid(error::Error::InvalidTransaction(e).into()),
ValidatedTransaction::Invalid(hash, error::Error::InvalidTransaction(e).into()),
Err(TransactionValidityError::Unknown(e)) =>
ValidatedTransaction::Unknown(hash, error::Error::UnknownTransaction(e).into()),
},
Err(e) => ValidatedTransaction::Invalid(e),
Err(e) => ValidatedTransaction::Invalid(hash, e),
})))
}
}