diff --git a/src/server/rtu.rs b/src/server/rtu.rs index 84e5f2c..5cb2aeb 100644 --- a/src/server/rtu.rs +++ b/src/server/rtu.rs @@ -78,12 +78,16 @@ where S::Request: From> + Send, { loop { - let Some(request_adu) = framed.next().await.transpose().inspect_err(|err| { - log::debug!("Failed to receive and decode request ADU: {err}"); - })? - else { - log::debug!("Stream has finished"); - break; + let request_adu = match framed.next().await { + Some(Ok(adu)) => adu, + Some(Err(err)) => { + log::debug!("Failed to receive and decode request ADU: {err}"); + continue; + } + None => { + log::debug!("TCP socket has been closed"); + break; + } }; let RequestAdu { diff --git a/src/server/rtu_over_tcp.rs b/src/server/rtu_over_tcp.rs index 5d1c3d6..937cfa8 100644 --- a/src/server/rtu_over_tcp.rs +++ b/src/server/rtu_over_tcp.rs @@ -144,12 +144,16 @@ where T: AsyncRead + AsyncWrite + Unpin, { loop { - let Some(request_adu) = framed.next().await.transpose().inspect_err(|err| { - log::debug!("Failed to receive and decode request ADU: {err}"); - })? - else { - log::debug!("TCP socket has been closed"); - break; + let request_adu = match framed.next().await { + Some(Ok(adu)) => adu, + Some(Err(err)) => { + log::debug!("Failed to receive and decode request ADU: {err}"); + continue; + } + None => { + log::debug!("TCP socket has been closed"); + break; + } }; let RequestAdu { diff --git a/src/server/tcp.rs b/src/server/tcp.rs index 6d4f1b7..b920c59 100644 --- a/src/server/tcp.rs +++ b/src/server/tcp.rs @@ -143,12 +143,16 @@ where T: AsyncRead + AsyncWrite + Unpin, { loop { - let Some(request_adu) = framed.next().await.transpose().inspect_err(|err| { - log::debug!("Failed to receive and decode request ADU: {err}"); - })? - else { - log::debug!("TCP socket has been closed"); - break; + let request_adu = match framed.next().await { + Some(Ok(adu)) => adu, + Some(Err(err)) => { + log::debug!("Failed to receive and decode request ADU: {err}"); + continue; + } + None => { + log::debug!("TCP socket has been closed"); + break; + } }; let RequestAdu {