From 776a3ecd1ff0a2b0ca5c001d6b618ba1861789e4 Mon Sep 17 00:00:00 2001 From: link2xt Date: Sun, 12 Jun 2022 18:38:10 +0000 Subject: [PATCH] mimefactory: use async_std instead of std Read files asynchronously to avoid blocking threads. --- src/mimefactory.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/mimefactory.rs b/src/mimefactory.rs index 3c892ab0f..4dd2c3021 100644 --- a/src/mimefactory.rs +++ b/src/mimefactory.rs @@ -3,6 +3,7 @@ use std::convert::TryInto; use anyhow::{bail, ensure, Context as _, Result}; +use async_std::fs; use chrono::TimeZone; use lettre_email::{mime, Address, Header, MimeMultipartType, PartBuilder}; @@ -1183,7 +1184,7 @@ impl<'a> MimeFactory<'a> { if self.attach_selfavatar { match context.get_config(Config::Selfavatar).await? { - Some(path) => match build_selfavatar_file(context, &path) { + Some(path) => match build_selfavatar_file(context, &path).await { Ok(avatar) => headers.hidden.push(Header::new( "Chat-User-Avatar".into(), format!("base64:{}", avatar), @@ -1366,7 +1367,7 @@ async fn build_body_file( maybe_encode_words(&filename_to_send) ); - let body = std::fs::read(blob.to_abs_path())?; + let body = fs::read(blob.to_abs_path()).await?; let encoded_body = wrapped_base64_encode(&body); let mail = PartBuilder::new() @@ -1378,9 +1379,9 @@ async fn build_body_file( Ok((mail, filename_to_send)) } -fn build_selfavatar_file(context: &Context, path: &str) -> Result { +async fn build_selfavatar_file(context: &Context, path: &str) -> Result { let blob = BlobObject::from_path(context, path.as_ref())?; - let body = std::fs::read(blob.to_abs_path())?; + let body = fs::read(blob.to_abs_path()).await?; let encoded_body = wrapped_base64_encode(&body); Ok(encoded_body) }