From 6c440bda7383102248de36403b6b4205eb039dc8 Mon Sep 17 00:00:00 2001 From: Paolo Barbolini Date: Tue, 4 Aug 2020 11:20:58 +0200 Subject: [PATCH] chore: minor improvements --- src/message/utf8_b.rs | 11 ++--------- src/transport/smtp/client/mod.rs | 24 +++++++++++------------- src/transport/smtp/client/net.rs | 5 ++--- 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/src/message/utf8_b.rs b/src/message/utf8_b.rs index 71f7695..3da84d6 100644 --- a/src/message/utf8_b.rs +++ b/src/message/utf8_b.rs @@ -23,15 +23,8 @@ pub fn decode(s: &str) -> Option { let s = s.split_at(10).1; let s = s.split_at(s.len() - 2).0; base64::decode(s) - .map_err(|_| ()) - .and_then(|v| { - if let Ok(s) = from_utf8(&v) { - Ok(Some(s.into())) - } else { - Err(()) - } - }) - .unwrap_or(None) + .ok() + .and_then(|v| from_utf8(&v).ok().map(|s| s.into())) } else { Some(s.into()) } diff --git a/src/transport/smtp/client/mod.rs b/src/transport/smtp/client/mod.rs index 5d3df29..96fc5b3 100644 --- a/src/transport/smtp/client/mod.rs +++ b/src/transport/smtp/client/mod.rs @@ -40,7 +40,7 @@ impl ClientCodec { } /// Adds transparency - fn encode(&mut self, frame: &[u8], buf: &mut Vec) -> Result<(), Error> { + fn encode(&mut self, frame: &[u8], buf: &mut Vec) { match frame.len() { 0 => { match self.escape_count { @@ -50,7 +50,6 @@ impl ClientCodec { _ => unreachable!(), } self.escape_count = 0; - Ok(()) } _ => { let mut start = 0; @@ -69,7 +68,6 @@ impl ClientCodec { } } buf.extend_from_slice(&frame[start..]); - Ok(()) } } } @@ -283,7 +281,7 @@ impl SmtpConnection { pub fn message(&mut self, message: &[u8]) -> Result { let mut out_buf: Vec = vec![]; let mut codec = ClientCodec::new(); - codec.encode(message, &mut out_buf)?; + codec.encode(message, &mut out_buf); self.write(out_buf.as_slice())?; self.write(b"\r\n.\r\n")?; self.read_response() @@ -346,15 +344,15 @@ mod test { let mut codec = ClientCodec::new(); let mut buf: Vec = vec![]; - assert!(codec.encode(b"test\r\n", &mut buf).is_ok()); - assert!(codec.encode(b".\r\n", &mut buf).is_ok()); - assert!(codec.encode(b"\r\ntest", &mut buf).is_ok()); - assert!(codec.encode(b"te\r\n.\r\nst", &mut buf).is_ok()); - assert!(codec.encode(b"test", &mut buf).is_ok()); - assert!(codec.encode(b"test.", &mut buf).is_ok()); - assert!(codec.encode(b"test\n", &mut buf).is_ok()); - assert!(codec.encode(b".test\n", &mut buf).is_ok()); - assert!(codec.encode(b"test", &mut buf).is_ok()); + codec.encode(b"test\r\n", &mut buf); + codec.encode(b".\r\n", &mut buf); + codec.encode(b"\r\ntest", &mut buf); + codec.encode(b"te\r\n.\r\nst", &mut buf); + codec.encode(b"test", &mut buf); + codec.encode(b"test.", &mut buf); + codec.encode(b"test\n", &mut buf); + codec.encode(b".test\n", &mut buf); + codec.encode(b"test", &mut buf); assert_eq!( String::from_utf8(buf).unwrap(), "test\r\n..\r\n\r\ntestte\r\n..\r\nsttesttest.test\n.test\ntest" diff --git a/src/transport/smtp/client/net.rs b/src/transport/smtp/client/net.rs index 5dcf553..c112d29 100644 --- a/src/transport/smtp/client/net.rs +++ b/src/transport/smtp/client/net.rs @@ -99,9 +99,8 @@ impl NetworkStream { ) -> Result { let addrs = server.to_socket_addrs()?; for addr in addrs { - let result = TcpStream::connect_timeout(&addr, timeout); - if result.is_ok() { - return result.map_err(|e| e.into()); + if let Ok(result) = TcpStream::connect_timeout(&addr, timeout) { + return Ok(result); } } Err(Error::Client("Could not connect"))