From ca0456a6f7faefd56436aff2475f8d67723df294 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 20 Feb 2023 10:27:20 -0700 Subject: [PATCH] fix detecting EOF --- crates/kumod/src/smtp_server.rs | 3 +++ crates/rfc5321/src/client.rs | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/crates/kumod/src/smtp_server.rs b/crates/kumod/src/smtp_server.rs index bab0c558..e5465185 100644 --- a/crates/kumod/src/smtp_server.rs +++ b/crates/kumod/src/smtp_server.rs @@ -310,6 +310,9 @@ impl SmtpServer { // Didn't find a complete line, fill up the rest of the buffer let mut data = [0u8; 1024]; let size = self.socket.as_mut().unwrap().read(&mut data).await?; + if size == 0 { + anyhow::bail!("client disconnected"); + } self.read_buffer.extend_from_slice(&data[0..size]); } } diff --git a/crates/rfc5321/src/client.rs b/crates/rfc5321/src/client.rs index a860450f..3ac0df1f 100644 --- a/crates/rfc5321/src/client.rs +++ b/crates/rfc5321/src/client.rs @@ -82,6 +82,10 @@ impl SmtpClient { // Didn't find a complete line, fill up the rest of the buffer let mut data = [0u8; MAX_LINE_LEN]; let size = self.socket.as_mut().unwrap().read(&mut data).await?; + if size == 0 { + self.socket.take(); + return Err(ClientError::NotConnected); + } self.read_buffer.extend_from_slice(&data[0..size]); } }