From 72f3cd8f12d95ca4e78703eeafc6bdc4cf4f127c Mon Sep 17 00:00:00 2001 From: leo-lb Date: Tue, 12 Mar 2019 01:03:58 +0100 Subject: [PATCH] fix(smtp-transport): Client::read_response infinite loop I have encountered an issue on Gmail where the server returned an error, and the code was stuck here looping indefinitely. This commit fixes the issue. --- lettre/src/smtp/client/mod.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lettre/src/smtp/client/mod.rs b/lettre/src/smtp/client/mod.rs index c2c1843..315a78a 100644 --- a/lettre/src/smtp/client/mod.rs +++ b/lettre/src/smtp/client/mod.rs @@ -254,7 +254,13 @@ impl InnerClient { break; } // TODO read more than one line - self.stream.as_mut().unwrap().read_line(&mut raw_response)?; + let read_count = self.stream.as_mut().unwrap().read_line(&mut raw_response)?; + + // EOF is reached + if read_count == 0 { + break; + } + response = raw_response.parse::(); }