p2p: remove else block, return early on conn err
What changed, and why it matters
This is a minor code cleanup in an example program. It changes how a failed network connection is handled so the program exits early with an error message instead of silently doing nothing. There is no security issue here.
No security action needed. This is a routine style/refactoring change in example code.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit refactors p2p/examples/ping-pong.rs to use Rust’s ‘let-else’ syntax for early return when TcpStream::connect fails. Previously the code used an if-let block with an empty else branch that printed an error. The behavior is functionally equivalent: on connection failure the program prints ‘failed to open connection’ and now explicitly returns. No cryptographic, network protocol, or memory-safety behavior changes.
Changed components
p2p/examples/ping-pong.rsInspect captured patch +26 / −27
### p2p/examples/ping-pong.rs
@@ -44,35 +44,34 @@ fn main() {
let version_message = build_version_message(remote_socket);
let version_message = message::V1NetworkMessage::new(magic, version_message);
- if let Ok(mut stream) = TcpStream::connect(remote_socket) {
- encoding::encode_to_writer(&version_message, &mut stream).unwrap();
-
- let read_stream = stream.try_clone().unwrap();
- let mut stream_reader = BufReader::new(read_stream);
- loop {
- let msg =
- encoding::decode_from_read::<V1NetworkMessage, _>(&mut stream_reader).unwrap();
-
- match msg.payload() {
- message::NetworkMessage::Ping(ping) => {
- println!("got ping {:?}", ping);
- let pong = Pong::from_ping(ping);
- println!("send pong {:?}", pong);
- let net_msg = V1NetworkMessage::new(magic, NetworkMessage::Pong(pong));
- encoding::encode_to_writer(&net_msg, &mut stream).unwrap();
- }
- message::NetworkMessage::SendCmpct(_) => {}
- message::NetworkMessage::Verack => {}
- message::NetworkMessage::Version(_v) => {
- let verack = V1NetworkMessage::new(magic, NetworkMessage::Verack);
- encoding::encode_to_writer(&verack, &mut stream).unwrap();
- }
- message::NetworkMessage::FeeFilter(_f) => {}
- _ => unimplemented!("{:?}", msg.payload()),
+ let Ok(mut stream) = TcpStream::connect(remote_socket) else {
+ eprintln!("failed to open connection");
+ return;
+ };
+ encoding::encode_to_writer(&version_message, &mut stream).unwrap();
+
+ let read_stream = stream.try_clone().unwrap();
+ let mut stream_reader = BufReader::new(read_stream);
+ loop {
+ let msg = encoding::decode_from_read::<V1NetworkMessage, _>(&mut stream_reader).unwrap();
+
+ match msg.payload() {
+ message::NetworkMessage::Ping(ping) => {
+ println!("got ping {:?}", ping);
+ let pong = Pong::from_ping(ping);
+ println!("send pong {:?}", pong);
+ let net_msg = V1NetworkMessage::new(magic, NetworkMessage::Pong(pong));
+ encoding::encode_to_writer(&net_msg, &mut stream).unwrap();
+ }
+ message::NetworkMessage::SendCmpct(_) => {}
+ message::NetworkMessage::Verack => {}
+ message::NetworkMessage::Version(_v) => {
+ let verack = V1NetworkMessage::new(magic, NetworkMessage::Verack);
+ encoding::encode_to_writer(&verack, &mut stream).unwrap();
}
+ message::NetworkMessage::FeeFilter(_f) => {}
+ _ => unimplemented!("{:?}", msg.payload()),
}
- } else {
- eprintln!("failed to open connection");
}
}
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.