diff --git a/crates/net/network/src/session/mod.rs b/crates/net/network/src/session/mod.rs index 6ce4e97aa51..e8a80bcff19 100644 --- a/crates/net/network/src/session/mod.rs +++ b/crates/net/network/src/session/mod.rs @@ -1006,10 +1006,7 @@ async fn authenticate_stream( (eth_stream.into(), their_status) } else { // Multiplex the stream with the extra protocols - let (mut multiplex_stream, their_status) = RlpxProtocolMultiplexer::new(p2p_stream) - .into_eth_satellite_stream(status, fork_filter) - .await - .unwrap(); + let mut multiplex_stream = RlpxProtocolMultiplexer::new(p2p_stream); // install additional handlers for handler in extra_handlers.into_iter() { @@ -1022,6 +1019,19 @@ async fn authenticate_stream( .ok(); } + let (multiplex_stream, their_status) = + match multiplex_stream.into_eth_satellite_stream(status, fork_filter).await { + Ok((multiplex_stream, their_status)) => (multiplex_stream, their_status), + Err(err) => { + return PendingSessionEvent::Disconnected { + remote_addr, + session_id, + direction, + error: Some(PendingSessionHandshakeError::Eth(err)), + } + } + }; + (multiplex_stream.into(), their_status) };