From b10ffba33d84bf98c6e4f385aaa36e7d8584eca3 Mon Sep 17 00:00:00 2001 From: Tien Nguyen <116023870+htiennv@users.noreply.github.com> Date: Fri, 29 Nov 2024 21:21:45 +0700 Subject: [PATCH] feat: add check empty when broadcasting transactions (#13008) Co-authored-by: Matthias Seitz --- crates/net/network/src/transactions/mod.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/crates/net/network/src/transactions/mod.rs b/crates/net/network/src/transactions/mod.rs index e87731a0fd..e17069b67c 100644 --- a/crates/net/network/src/transactions/mod.rs +++ b/crates/net/network/src/transactions/mod.rs @@ -121,7 +121,11 @@ impl TransactionsHandle { /// /// Note: this only propagates the transactions that are known to the pool. pub fn propagate_hashes_to(&self, hash: impl IntoIterator, peer: PeerId) { - self.send(TransactionsCommand::PropagateHashesTo(hash.into_iter().collect(), peer)) + let hashes = hash.into_iter().collect::>(); + if hashes.is_empty() { + return + } + self.send(TransactionsCommand::PropagateHashesTo(hashes, peer)) } /// Request the active peer IDs from the [`TransactionsManager`]. @@ -132,7 +136,12 @@ impl TransactionsHandle { } /// Manually propagate full transactions to a specific peer. + /// + /// Do nothing if transactions are empty. pub fn propagate_transactions_to(&self, transactions: Vec, peer: PeerId) { + if transactions.is_empty() { + return + } self.send(TransactionsCommand::PropagateTransactionsTo(transactions, peer)) } @@ -140,7 +149,12 @@ impl TransactionsHandle { /// /// It's up to the [`TransactionsManager`] whether the transactions are sent as hashes or in /// full. + /// + /// Do nothing if transactions are empty. pub fn propagate_transactions(&self, transactions: Vec) { + if transactions.is_empty() { + return + } self.send(TransactionsCommand::PropagateTransactions(transactions)) } @@ -149,6 +163,9 @@ impl TransactionsHandle { &self, peers: Vec, ) -> Result>, RecvError> { + if peers.is_empty() { + return Ok(Default::default()) + } let (tx, rx) = oneshot::channel(); self.send(TransactionsCommand::GetTransactionHashes { peers, tx }); rx.await