diff --git a/gateway/src/node/mixnet_handling/receiver/connection_handler.rs b/gateway/src/node/mixnet_handling/receiver/connection_handler.rs index bd566f5c2..66a7ddfba 100644 --- a/gateway/src/node/mixnet_handling/receiver/connection_handler.rs +++ b/gateway/src/node/mixnet_handling/receiver/connection_handler.rs @@ -189,9 +189,9 @@ impl ConnectionHandler { _ = shutdown.recv() => { log::trace!("ConnectionHandler: received shutdown"); } - Some(framed_sphinx_packet) = framed_conn.next() => { + framed_sphinx_packet = framed_conn.next() => { match framed_sphinx_packet { - Ok(framed_sphinx_packet) => { + Some(Ok(framed_sphinx_packet)) => { // TODO: benchmark spawning tokio task with full processing vs just processing it // synchronously under higher load in single and multi-threaded situation. @@ -200,12 +200,13 @@ impl ConnectionHandler { // that change would only slow things down self.handle_received_packet(framed_sphinx_packet).await; } - Err(err) => { + Some(Err(err)) => { error!( "The socket connection got corrupted with error: {err}. Closing the socket", ); return; } + None => break, // stream got closed by remote } } } diff --git a/mixnode/src/node/listener/connection_handler/mod.rs b/mixnode/src/node/listener/connection_handler/mod.rs index af72f2962..684793b01 100644 --- a/mixnode/src/node/listener/connection_handler/mod.rs +++ b/mixnode/src/node/listener/connection_handler/mod.rs @@ -85,9 +85,9 @@ impl ConnectionHandler { _ = shutdown.recv() => { log::trace!("ConnectionHandler: received shutdown"); } - Some(framed_sphinx_packet) = framed_conn.next() => { + framed_sphinx_packet = framed_conn.next() => { match framed_sphinx_packet { - Ok(framed_sphinx_packet) => { + Some(Ok(framed_sphinx_packet)) => { // TODO: benchmark spawning tokio task with full processing vs just processing it // synchronously (without delaying inside of course, // delay is moved to a global DelayQueue) @@ -98,12 +98,13 @@ impl ConnectionHandler { // that change would only slow things down self.handle_received_packet(framed_sphinx_packet); } - Err(err) => { + Some(Err(err)) => { error!( "The socket connection got corrupted with error: {err}. Closing the socket", ); return; } + None => break, // stream got closed by remote } }, }