diff --git a/crates/net/network/src/network.rs b/crates/net/network/src/network.rs index d71933900..cfd579699 100644 --- a/crates/net/network/src/network.rs +++ b/crates/net/network/src/network.rs @@ -149,7 +149,7 @@ impl NetworkHandle { pub async fn transactions_handle(&self) -> Option> { let (tx, rx) = oneshot::channel(); let _ = self.manager().send(NetworkHandleMessage::GetTransactionsHandle(tx)); - rx.await.unwrap() + rx.await.ok().flatten() } /// Send message to gracefully shutdown node. @@ -266,7 +266,8 @@ impl PeersInfo for NetworkHandle { builder.udp6(local_node_record.udp_port); builder.tcp6(local_node_record.tcp_port); } - builder.build(&self.inner.secret_key).expect("valid enr") + builder.build(&self.inner.secret_key) + .expect("ENR builder should always succeed with valid IP and ports") } } diff --git a/crates/net/network/src/peers.rs b/crates/net/network/src/peers.rs index adc95caa2..6433cd2c0 100644 --- a/crates/net/network/src/peers.rs +++ b/crates/net/network/src/peers.rs @@ -647,8 +647,11 @@ impl PeersManager { // remove peer if it has been marked for removal if remove_peer { - let (peer_id, _) = self.peers.remove_entry(peer_id).expect("peer must exist"); - self.queued_actions.push_back(PeerAction::PeerRemoved(peer_id)); + if let Some((peer_id, _)) = self.peers.remove_entry(peer_id) { + self.queued_actions.push_back(PeerAction::PeerRemoved(peer_id)); + } else { + tracing::warn!(target: "net::peers", "Attempted to remove non-existent peer: {:?}", peer_id); + } } else if let Some(backoff_until) = backoff_until { // otherwise, backoff the peer if marked as such self.backoff_peer_until(*peer_id, backoff_until); diff --git a/crates/net/network/src/session/active.rs b/crates/net/network/src/session/active.rs index f59055f84..cbcd72324 100644 --- a/crates/net/network/src/session/active.rs +++ b/crates/net/network/src/session/active.rs @@ -391,7 +391,7 @@ impl ActiveSession { }; self.terminate_message = Some((self.to_session_manager.inner().clone(), msg)); - self.poll_terminate_message(cx).expect("message is set") + self.poll_terminate_message(cx).unwrap_or(Poll::Ready(())) } /// Report back that this session has been closed due to an error @@ -402,7 +402,7 @@ impl ActiveSession { error, }; self.terminate_message = Some((self.to_session_manager.inner().clone(), msg)); - self.poll_terminate_message(cx).expect("message is set") + self.poll_terminate_message(cx).unwrap_or(Poll::Ready(())) } /// Starts the disconnect process