diff --git a/src/configure/mod.rs b/src/configure/mod.rs index cb570dea4..07d70d482 100644 --- a/src/configure/mod.rs +++ b/src/configure/mod.rs @@ -6,6 +6,8 @@ mod read_url; use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC}; +use async_std::task; + use crate::config::Config; use crate::constants::*; use crate::context::Context; @@ -540,12 +542,12 @@ fn try_imap_one_param(context: &Context, param: &LoginParam) -> Option { param.imap_certificate_checks ); info!(context, "Trying: {}", inf); - if context + if task::block_on(context .inbox_thread .read() .unwrap() .imap - .connect(context, ¶m) + .connect(context, ¶m)) { info!(context, "success: {}", inf); return Some(true); diff --git a/src/imap/mod.rs b/src/imap/mod.rs index 5c58d45d5..faa70b502 100644 --- a/src/imap/mod.rs +++ b/src/imap/mod.rs @@ -339,7 +339,7 @@ impl Imap { let param = LoginParam::from_database(context, "configured_"); // the trailing underscore is correct - if self.connect(context, ¶m) { + if task::block_on(self.connect(context, ¶m)) { self.ensure_configured_folders(context, true) } else { Err(Error::ConnectionFailed(format!("{}", param))) @@ -348,8 +348,7 @@ impl Imap { /// tries connecting to imap account using the specific login /// parameters - pub fn connect(&self, context: &Context, lp: &LoginParam) -> bool { - task::block_on(async move { + pub async fn connect(&self, context: &Context, lp: &LoginParam) -> bool { if lp.mail_server.is_empty() || lp.mail_user.is_empty() || lp.mail_pw.is_empty() { return false; } @@ -423,7 +422,6 @@ impl Imap { } else { true } - }) } pub fn disconnect(&self, context: &Context) {