From 6aa2daee0fdaa73ca4840a1257c75a97baadb1ac Mon Sep 17 00:00:00 2001 From: Will Smith <44074786+Will-Smith11@users.noreply.github.com> Date: Tue, 13 Dec 2022 02:25:41 -0500 Subject: [PATCH] fix(net): outgoing requsts (#398) * remove inpossible case * fix(net): outgoing requests stopping --- crates/net/network/src/manager.rs | 7 +++---- crates/net/network/src/peers/manager.rs | 4 ++++ crates/transaction-pool/src/pool/mod.rs | 2 +- crates/transaction-pool/src/pool/txpool.rs | 2 +- crates/transaction-pool/src/test_util/mock.rs | 6 +++--- crates/transaction-pool/src/traits.rs | 2 +- crates/transaction-pool/src/validate.rs | 2 +- 7 files changed, 14 insertions(+), 11 deletions(-) diff --git a/crates/net/network/src/manager.rs b/crates/net/network/src/manager.rs index a29412f688..f21121a224 100644 --- a/crates/net/network/src/manager.rs +++ b/crates/net/network/src/manager.rs @@ -532,10 +532,9 @@ where ?error, "Outgoing pending session failed" ); - this.swarm - .state_mut() - .peers_mut() - .apply_reputation_change(&peer_id, ReputationChangeKind::FailedToConnect); + let swarm = this.swarm.state_mut().peers_mut(); + swarm.on_closed_outgoing_pending_session(); + swarm.apply_reputation_change(&peer_id, ReputationChangeKind::FailedToConnect); } SwarmEvent::OutgoingConnectionError { remote_addr, peer_id, error } => { warn!( diff --git a/crates/net/network/src/peers/manager.rs b/crates/net/network/src/peers/manager.rs index 90fa352c85..ad1517afb7 100644 --- a/crates/net/network/src/peers/manager.rs +++ b/crates/net/network/src/peers/manager.rs @@ -121,6 +121,10 @@ impl PeersManager { pub(crate) fn on_closed_incoming_pending_session(&mut self) { self.connection_info.decr_in() } + /// Invoked when a pending session was closed. + pub(crate) fn on_closed_outgoing_pending_session(&mut self) { + self.connection_info.decr_out() + } /// Called when a new _incoming_ active session was established to the given peer. /// diff --git a/crates/transaction-pool/src/pool/mod.rs b/crates/transaction-pool/src/pool/mod.rs index cd35fa8ea1..2e9ec2c40b 100644 --- a/crates/transaction-pool/src/pool/mod.rs +++ b/crates/transaction-pool/src/pool/mod.rs @@ -194,7 +194,7 @@ where ) -> PoolResult { match tx { TransactionValidationOutcome::Valid { balance, state_nonce, transaction } => { - let sender_id = self.get_sender_id(*transaction.sender()); + let sender_id = self.get_sender_id(transaction.sender()); let transaction_id = TransactionId::new(sender_id, transaction.nonce()); let tx = ValidPoolTransaction { diff --git a/crates/transaction-pool/src/pool/txpool.rs b/crates/transaction-pool/src/pool/txpool.rs index 72d001c179..fa9d9078b8 100644 --- a/crates/transaction-pool/src/pool/txpool.rs +++ b/crates/transaction-pool/src/pool/txpool.rs @@ -238,7 +238,7 @@ impl TxPool { Err(PoolError::ProtocolFeeCapTooLow(*transaction.hash(), fee_cap)) } Err(InsertErr::ExceededSenderTransactionsCapacity { transaction }) => { - Err(PoolError::SpammerExceededCapacity(*transaction.sender(), *transaction.hash())) + Err(PoolError::SpammerExceededCapacity(transaction.sender(), *transaction.hash())) } } } diff --git a/crates/transaction-pool/src/test_util/mock.rs b/crates/transaction-pool/src/test_util/mock.rs index 6a596df6eb..05b54fb673 100644 --- a/crates/transaction-pool/src/test_util/mock.rs +++ b/crates/transaction-pool/src/test_util/mock.rs @@ -282,10 +282,10 @@ impl PoolTransaction for MockTransaction { } } - fn sender(&self) -> &Address { + fn sender(&self) -> Address { match self { - MockTransaction::Legacy { sender, .. } => sender, - MockTransaction::Eip1559 { sender, .. } => sender, + MockTransaction::Legacy { sender, .. } => *sender, + MockTransaction::Eip1559 { sender, .. } => *sender, } } diff --git a/crates/transaction-pool/src/traits.rs b/crates/transaction-pool/src/traits.rs index 52a9fb1e5d..827d37a3ce 100644 --- a/crates/transaction-pool/src/traits.rs +++ b/crates/transaction-pool/src/traits.rs @@ -240,7 +240,7 @@ pub trait PoolTransaction: fmt::Debug + Send + Sync + FromRecoveredTransaction { fn hash(&self) -> &TxHash; /// The Sender of the transaction. - fn sender(&self) -> &Address; + fn sender(&self) -> Address; /// Returns the nonce for this transaction. fn nonce(&self) -> u64; diff --git a/crates/transaction-pool/src/validate.rs b/crates/transaction-pool/src/validate.rs index 68e9748b3f..bdbf16d334 100644 --- a/crates/transaction-pool/src/validate.rs +++ b/crates/transaction-pool/src/validate.rs @@ -69,7 +69,7 @@ impl ValidPoolTransaction { } /// Returns the address of the sender - pub fn sender(&self) -> &Address { + pub fn sender(&self) -> Address { self.transaction.sender() }