diff --git a/crates/net/network/src/session/active.rs b/crates/net/network/src/session/active.rs index 31d731fcea..2683ded205 100644 --- a/crates/net/network/src/session/active.rs +++ b/crates/net/network/src/session/active.rs @@ -105,7 +105,7 @@ impl ActiveSession { received: Instant::now(), }; if self - .try_emit_message(PeerMessage::EthRequest(PeerRequest::$req_item { + .safe_emit_message(PeerMessage::EthRequest(PeerRequest::$req_item { request, response: tx, })) @@ -255,6 +255,18 @@ impl ActiveSession { }); } + /// Send a message back to the [`SessionsManager`] + /// covering both broadcasts and incoming requests + fn safe_emit_message( + &self, + message: PeerMessage, + ) -> Result<(), mpsc::error::TrySendError> { + self.to_session + // we want this message to always arrive, so we clone the sender + .clone() + .try_send(ActiveSessionMessage::ValidMessage { peer_id: self.remote_peer_id, message }) + } + /// Send a message back to the [`SessionsManager`] fn try_emit_message( &self,