diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index 2f872d6e1..e2e0cc143 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -169,7 +169,7 @@ pub unsafe extern "C" fn dc_context_unref(context: *mut dc_context_t) { eprintln!("ignoring careless call to dc_context_unref()"); return; } - Box::from_raw(context); + drop(Box::from_raw(context)); } #[no_mangle] @@ -463,7 +463,7 @@ pub unsafe extern "C" fn dc_event_unref(a: *mut dc_event_t) { return; } - Box::from_raw(a); + drop(Box::from_raw(a)); } #[no_mangle] @@ -687,7 +687,7 @@ pub unsafe extern "C" fn dc_event_emitter_unref(emitter: *mut dc_event_emitter_t return; } - Box::from_raw(emitter); + drop(Box::from_raw(emitter)); } #[no_mangle] @@ -2426,7 +2426,7 @@ pub unsafe extern "C" fn dc_array_unref(a: *mut dc_array::dc_array_t) { return; } - Box::from_raw(a); + drop(Box::from_raw(a)); } #[no_mangle] @@ -2607,7 +2607,7 @@ pub unsafe extern "C" fn dc_chatlist_unref(chatlist: *mut dc_chatlist_t) { eprintln!("ignoring careless call to dc_chatlist_unref()"); return; } - Box::from_raw(chatlist); + drop(Box::from_raw(chatlist)); } #[no_mangle] @@ -2752,7 +2752,7 @@ pub unsafe extern "C" fn dc_chat_unref(chat: *mut dc_chat_t) { return; } - Box::from_raw(chat); + drop(Box::from_raw(chat)); } #[no_mangle] @@ -3022,7 +3022,7 @@ pub unsafe extern "C" fn dc_msg_unref(msg: *mut dc_msg_t) { return; } - Box::from_raw(msg); + drop(Box::from_raw(msg)); } #[no_mangle] @@ -3744,7 +3744,7 @@ pub unsafe extern "C" fn dc_contact_unref(contact: *mut dc_contact_t) { eprintln!("ignoring careless call to dc_contact_unref()"); return; } - Box::from_raw(contact); + drop(Box::from_raw(contact)); } #[no_mangle] @@ -3908,7 +3908,7 @@ pub unsafe extern "C" fn dc_lot_unref(lot: *mut dc_lot_t) { return; } - Box::from_raw(lot); + drop(Box::from_raw(lot)); } #[no_mangle] @@ -4200,7 +4200,8 @@ pub unsafe extern "C" fn dc_accounts_get_account( } let accounts = &*accounts; - block_on(async move { accounts.read().await.get_account(id).await }) + block_on(accounts.read()) + .get_account(id) .map(|ctx| Box::into_raw(Box::new(ctx))) .unwrap_or_else(std::ptr::null_mut) } @@ -4215,7 +4216,8 @@ pub unsafe extern "C" fn dc_accounts_get_selected_account( } let accounts = &*accounts; - block_on(async move { accounts.read().await.get_selected_account().await }) + block_on(accounts.read()) + .get_selected_account() .map(|ctx| Box::into_raw(Box::new(ctx))) .unwrap_or_else(std::ptr::null_mut) } @@ -4360,7 +4362,7 @@ pub unsafe extern "C" fn dc_accounts_get_all(accounts: *mut dc_accounts_t) -> *m } let accounts = &*accounts; - let list = block_on(async move { accounts.read().await.get_all().await }); + let list = block_on(accounts.read()).get_all(); let array: dc_array_t = list.into(); Box::into_raw(Box::new(array)) @@ -4430,7 +4432,7 @@ pub unsafe extern "C" fn dc_accounts_get_event_emitter( } let accounts = &*accounts; - let emitter = block_on(async move { accounts.read().await.get_event_emitter().await }); + let emitter = block_on(accounts.read()).get_event_emitter(); Box::into_raw(Box::new(emitter)) } diff --git a/deltachat-jsonrpc/src/api/mod.rs b/deltachat-jsonrpc/src/api/mod.rs index 71f97316d..708a50771 100644 --- a/deltachat-jsonrpc/src/api/mod.rs +++ b/deltachat-jsonrpc/src/api/mod.rs @@ -65,7 +65,6 @@ impl CommandApi { .read() .await .get_account(id) - .await .ok_or_else(|| anyhow!("account with id {} not found", id))?; Ok(sc) } @@ -100,7 +99,7 @@ impl CommandApi { } async fn get_all_account_ids(&self) -> Vec { - self.accounts.read().await.get_all().await + self.accounts.read().await.get_all() } /// Select account id for internally selected state. @@ -112,14 +111,14 @@ impl CommandApi { /// Get the selected account id of the internal state.. /// TODO: Likely this is deprecated as all methods take an account id now. async fn get_selected_account_id(&self) -> Option { - self.accounts.read().await.get_selected_account_id().await + self.accounts.read().await.get_selected_account_id() } /// Get a list of all configured accounts. async fn get_all_accounts(&self) -> Result> { let mut accounts = Vec::new(); - for id in self.accounts.read().await.get_all().await { - let context_option = self.accounts.read().await.get_account(id).await; + for id in self.accounts.read().await.get_all() { + let context_option = self.accounts.read().await.get_account(id); if let Some(ctx) = context_option { accounts.push(Account::from_context(&ctx, id).await?) } else { @@ -135,7 +134,7 @@ impl CommandApi { /// Get top-level info for an account. async fn get_account_info(&self, account_id: u32) -> Result { - let context_option = self.accounts.read().await.get_account(account_id).await; + let context_option = self.accounts.read().await.get_account(account_id); if let Some(ctx) = context_option { Ok(Account::from_context(&ctx, account_id).await?) } else { diff --git a/deltachat-jsonrpc/src/webserver.rs b/deltachat-jsonrpc/src/webserver.rs index 3f6b62702..c2f770be7 100644 --- a/deltachat-jsonrpc/src/webserver.rs +++ b/deltachat-jsonrpc/src/webserver.rs @@ -44,7 +44,7 @@ async fn handler(ws: WebSocketUpgrade, Extension(api): Extension) -> let (client, out_receiver) = RpcClient::new(); let session = RpcSession::new(client.clone(), api.clone()); tokio::spawn(async move { - let events = api.accounts.read().await.get_event_emitter().await; + let events = api.accounts.read().await.get_event_emitter(); while let Some(event) = events.recv().await { let event = event_to_json_rpc_notification(event); client.send_notification("event", Some(event)).await.ok(); diff --git a/src/accounts.rs b/src/accounts.rs index d3d75f0d2..a256c8c6d 100644 --- a/src/accounts.rs +++ b/src/accounts.rs @@ -69,19 +69,19 @@ impl Accounts { } /// Get an account by its `id`: - pub async fn get_account(&self, id: u32) -> Option { + pub fn get_account(&self, id: u32) -> Option { self.accounts.get(&id).cloned() } /// Get the currently selected account. - pub async fn get_selected_account(&self) -> Option { - let id = self.config.get_selected_account().await; + pub fn get_selected_account(&self) -> Option { + let id = self.config.get_selected_account(); self.accounts.get(&id).cloned() } /// Returns the currently selected account's id or None if no account is selected. - pub async fn get_selected_account_id(&self) -> Option { - match self.config.get_selected_account().await { + pub fn get_selected_account_id(&self) -> Option { + match self.config.get_selected_account() { 0 => None, id => Some(id), } @@ -135,7 +135,7 @@ impl Accounts { ctx.stop_io().await; drop(ctx); - if let Some(cfg) = self.config.get_account(id).await { + if let Some(cfg) = self.config.get_account(id) { // Spend up to 1 minute trying to remove the files. // Files may remain locked up to 30 seconds due to r2d2 bug: // https://github.com/sfackler/r2d2/issues/99 @@ -171,7 +171,7 @@ impl Accounts { ensure!(dbfile.exists(), "no database found: {}", dbfile.display()); ensure!(blobdir.exists(), "no blobdir found: {}", blobdir.display()); - let old_id = self.config.get_selected_account().await; + let old_id = self.config.get_selected_account(); // create new account let account_config = self @@ -225,7 +225,7 @@ impl Accounts { } /// Get a list of all account ids. - pub async fn get_all(&self) -> Vec { + pub fn get_all(&self) -> Vec { self.accounts.keys().copied().collect() } @@ -281,7 +281,7 @@ impl Accounts { } /// Returns event emitter. - pub async fn get_event_emitter(&self) -> EventEmitter { + pub fn get_event_emitter(&self) -> EventEmitter { self.events.get_emitter() } } @@ -380,7 +380,6 @@ impl Config { .context("failed to select just added account")?; let cfg = self .get_account(id) - .await .context("failed to get just added account")?; Ok(cfg) } @@ -402,11 +401,11 @@ impl Config { self.sync().await } - async fn get_account(&self, id: u32) -> Option { + fn get_account(&self, id: u32) -> Option { self.inner.accounts.iter().find(|e| e.id == id).cloned() } - pub async fn get_selected_account(&self) -> u32 { + pub fn get_selected_account(&self) -> u32 { self.inner.selected_account } @@ -458,7 +457,7 @@ mod tests { let accounts2 = Accounts::open(p).await.unwrap(); assert_eq!(accounts1.accounts.len(), 1); - assert_eq!(accounts1.config.get_selected_account().await, 1); + assert_eq!(accounts1.config.get_selected_account(), 1); assert_eq!(accounts1.dir, accounts2.dir); assert_eq!(accounts1.config, accounts2.config,); @@ -472,23 +471,23 @@ mod tests { let mut accounts = Accounts::new(p.clone()).await.unwrap(); assert_eq!(accounts.accounts.len(), 0); - assert_eq!(accounts.config.get_selected_account().await, 0); + assert_eq!(accounts.config.get_selected_account(), 0); let id = accounts.add_account().await.unwrap(); assert_eq!(id, 1); assert_eq!(accounts.accounts.len(), 1); - assert_eq!(accounts.config.get_selected_account().await, 1); + assert_eq!(accounts.config.get_selected_account(), 1); let id = accounts.add_account().await.unwrap(); assert_eq!(id, 2); - assert_eq!(accounts.config.get_selected_account().await, id); + assert_eq!(accounts.config.get_selected_account(), id); assert_eq!(accounts.accounts.len(), 2); accounts.select_account(1).await.unwrap(); - assert_eq!(accounts.config.get_selected_account().await, 1); + assert_eq!(accounts.config.get_selected_account(), 1); accounts.remove_account(1).await.unwrap(); - assert_eq!(accounts.config.get_selected_account().await, 2); + assert_eq!(accounts.config.get_selected_account(), 2); assert_eq!(accounts.accounts.len(), 1); } @@ -498,17 +497,17 @@ mod tests { let p: PathBuf = dir.path().join("accounts"); let mut accounts = Accounts::new(p.clone()).await?; - assert!(accounts.get_selected_account().await.is_none()); - assert_eq!(accounts.config.get_selected_account().await, 0); + assert!(accounts.get_selected_account().is_none()); + assert_eq!(accounts.config.get_selected_account(), 0); let id = accounts.add_account().await?; - assert!(accounts.get_selected_account().await.is_some()); + assert!(accounts.get_selected_account().is_some()); assert_eq!(id, 1); assert_eq!(accounts.accounts.len(), 1); - assert_eq!(accounts.config.get_selected_account().await, id); + assert_eq!(accounts.config.get_selected_account(), id); accounts.remove_account(id).await?; - assert!(accounts.get_selected_account().await.is_none()); + assert!(accounts.get_selected_account().is_none()); Ok(()) } @@ -520,7 +519,7 @@ mod tests { let mut accounts = Accounts::new(p.clone()).await.unwrap(); assert_eq!(accounts.accounts.len(), 0); - assert_eq!(accounts.config.get_selected_account().await, 0); + assert_eq!(accounts.config.get_selected_account(), 0); let extern_dbfile: PathBuf = dir.path().join("other"); let ctx = Context::new(&extern_dbfile, 0, Events::new()) @@ -537,9 +536,9 @@ mod tests { .await .unwrap(); assert_eq!(accounts.accounts.len(), 1); - assert_eq!(accounts.config.get_selected_account().await, 1); + assert_eq!(accounts.config.get_selected_account(), 1); - let ctx = accounts.get_selected_account().await.unwrap(); + let ctx = accounts.get_selected_account().unwrap(); assert_eq!( "me@mail.com", ctx.get_config(crate::config::Config::Addr) @@ -562,7 +561,7 @@ mod tests { assert_eq!(id, expected_id); } - let ids = accounts.get_all().await; + let ids = accounts.get_all(); for (i, expected_id) in (1..10).enumerate() { assert_eq!(ids.get(i), Some(&expected_id)); } @@ -577,16 +576,16 @@ mod tests { let (id0, id1, id2) = { let mut accounts = Accounts::new(p.clone()).await?; accounts.add_account().await?; - let ids = accounts.get_all().await; + let ids = accounts.get_all(); assert_eq!(ids.len(), 1); let id0 = *ids.first().unwrap(); - let ctx = accounts.get_account(id0).await.unwrap(); + let ctx = accounts.get_account(id0).unwrap(); ctx.set_config(crate::config::Config::Addr, Some("one@example.org")) .await?; let id1 = accounts.add_account().await?; - let ctx = accounts.get_account(id1).await.unwrap(); + let ctx = accounts.get_account(id1).unwrap(); ctx.set_config(crate::config::Config::Addr, Some("two@example.org")) .await?; @@ -597,7 +596,7 @@ mod tests { } let id2 = accounts.add_account().await?; - let ctx = accounts.get_account(id2).await.unwrap(); + let ctx = accounts.get_account(id2).unwrap(); ctx.set_config(crate::config::Config::Addr, Some("three@example.org")) .await?; @@ -611,31 +610,31 @@ mod tests { let (id0_reopened, id1_reopened, id2_reopened) = { let accounts = Accounts::new(p.clone()).await?; - let ctx = accounts.get_selected_account().await.unwrap(); + let ctx = accounts.get_selected_account().unwrap(); assert_eq!( ctx.get_config(crate::config::Config::Addr).await?, Some("two@example.org".to_string()) ); - let ids = accounts.get_all().await; + let ids = accounts.get_all(); assert_eq!(ids.len(), 3); let id0 = *ids.first().unwrap(); - let ctx = accounts.get_account(id0).await.unwrap(); + let ctx = accounts.get_account(id0).unwrap(); assert_eq!( ctx.get_config(crate::config::Config::Addr).await?, Some("one@example.org".to_string()) ); let id1 = *ids.get(1).unwrap(); - let t = accounts.get_account(id1).await.unwrap(); + let t = accounts.get_account(id1).unwrap(); assert_eq!( t.get_config(crate::config::Config::Addr).await?, Some("two@example.org".to_string()) ); let id2 = *ids.get(2).unwrap(); - let ctx = accounts.get_account(id2).await.unwrap(); + let ctx = accounts.get_account(id2).unwrap(); assert_eq!( ctx.get_config(crate::config::Config::Addr).await?, Some("three@example.org".to_string()) @@ -661,7 +660,7 @@ mod tests { assert_eq!(accounts.accounts.len(), 0); // Create event emitter. - let event_emitter = accounts.get_event_emitter().await; + let event_emitter = accounts.get_event_emitter(); // Test that event emitter does not return `None` immediately. let duration = std::time::Duration::from_millis(1); @@ -692,7 +691,6 @@ mod tests { .context("failed to add closed account")?; let account = accounts .get_selected_account() - .await .context("failed to get account")?; assert_eq!(account.id, account_id); let passphrase_set_success = account @@ -707,7 +705,6 @@ mod tests { .context("failed to create second accounts manager")?; let account = accounts .get_selected_account() - .await .context("failed to get account")?; assert_eq!(account.is_open().await, false); diff --git a/src/blob.rs b/src/blob.rs index e1a2fb66b..6cbfdfa31 100644 --- a/src/blob.rs +++ b/src/blob.rs @@ -326,10 +326,7 @@ impl<'a> BlobObject<'a> { // max_bytes is 20_000 bytes: Outlook servers don't allow headers larger than 32k. // 32 / 4 * 3 = 24k if you account for base64 encoding. To be safe, we reduced this to 20k. - if let Some(new_name) = self - .recode_to_size(context, blob_abs, img_wh, Some(20_000)) - .await? - { + if let Some(new_name) = self.recode_to_size(context, blob_abs, img_wh, Some(20_000))? { self.name = new_name; } Ok(()) @@ -352,8 +349,7 @@ impl<'a> BlobObject<'a> { }; if self - .recode_to_size(context, blob_abs, img_wh, None) - .await? + .recode_to_size(context, blob_abs, img_wh, None)? .is_some() { return Err(format_err!( @@ -363,7 +359,7 @@ impl<'a> BlobObject<'a> { Ok(()) } - async fn recode_to_size( + fn recode_to_size( &self, context: &Context, mut blob_abs: PathBuf, @@ -746,7 +742,6 @@ mod tests { let blob = BlobObject::new_from_path(&t, &avatar_blob).await.unwrap(); blob.recode_to_size(&t, blob.to_abs_path(), 1000, Some(3000)) - .await .unwrap(); assert!(file_size(&avatar_blob).await <= 3000); assert!(file_size(&avatar_blob).await > 2000); diff --git a/src/config.rs b/src/config.rs index 3574a5aef..c45de3c89 100644 --- a/src/config.rs +++ b/src/config.rs @@ -198,7 +198,7 @@ impl Context { let rel_path = self.sql.get_raw_config(key).await?; rel_path.map(|p| get_abs_path(self, &p).to_string_lossy().into_owned()) } - Config::SysVersion => Some((&*DC_VERSION_STR).clone()), + Config::SysVersion => Some((*DC_VERSION_STR).clone()), Config::SysMsgsizeMaxRecommended => Some(format!("{}", RECOMMENDED_FILE_SIZE)), Config::SysConfigKeys => Some(get_config_keys_string()), _ => self.sql.get_raw_config(key).await?, diff --git a/src/configure.rs b/src/configure.rs index 4920b5d9e..33447db18 100644 --- a/src/configure.rs +++ b/src/configure.rs @@ -579,8 +579,7 @@ async fn try_imap_one_param( let (_s, r) = async_channel::bounded(1); - let mut imap = match Imap::new(param, socks5_config.clone(), addr, provider_strict_tls, r).await - { + let mut imap = match Imap::new(param, socks5_config.clone(), addr, provider_strict_tls, r) { Err(err) => { info!(context, "failure: {}", err); return Err(ConfigurationError { diff --git a/src/contact.rs b/src/contact.rs index 079b015b0..31edd7022 100644 --- a/src/contact.rs +++ b/src/contact.rs @@ -2278,7 +2278,7 @@ Hi."#; #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_was_seen_recently() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; diff --git a/src/context.rs b/src/context.rs index c459fd0b5..ff257231b 100644 --- a/src/context.rs +++ b/src/context.rs @@ -138,7 +138,7 @@ impl Context { if !blobdir.exists() { tokio::fs::create_dir_all(&blobdir).await?; } - let context = Context::with_blobdir(dbfile.into(), blobdir, id, events).await?; + let context = Context::with_blobdir(dbfile.into(), blobdir, id, events)?; Ok(context) } @@ -169,7 +169,7 @@ impl Context { self.sql.check_passphrase(passphrase).await } - pub(crate) async fn with_blobdir( + pub(crate) fn with_blobdir( dbfile: PathBuf, blobdir: PathBuf, id: u32, @@ -883,7 +883,7 @@ mod tests { let tmp = tempfile::tempdir().unwrap(); let dbfile = tmp.path().join("db.sqlite"); let blobdir = PathBuf::new(); - let res = Context::with_blobdir(dbfile, blobdir, 1, Events::new()).await; + let res = Context::with_blobdir(dbfile, blobdir, 1, Events::new()); assert!(res.is_err()); } @@ -892,7 +892,7 @@ mod tests { let tmp = tempfile::tempdir().unwrap(); let dbfile = tmp.path().join("db.sqlite"); let blobdir = tmp.path().join("blobs"); - let res = Context::with_blobdir(dbfile, blobdir, 1, Events::new()).await; + let res = Context::with_blobdir(dbfile, blobdir, 1, Events::new()); assert!(res.is_err()); } diff --git a/src/html.rs b/src/html.rs index 951da5d95..53044becf 100644 --- a/src/html.rs +++ b/src/html.rs @@ -98,7 +98,7 @@ impl HtmlMsgParser { if parser.html.is_empty() { if let Some(plain) = &parser.plain { - parser.html = plain.to_html().await; + parser.html = plain.to_html(); } } else { parser.cid_to_data_recursive(context, &parsedmail).await?; diff --git a/src/imap.rs b/src/imap.rs index 874fd48ea..08042f5b2 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -237,7 +237,7 @@ impl Imap { /// Creates new disconnected IMAP client using the specific login parameters. /// /// `addr` is used to renew token if OAuth2 authentication is used. - pub async fn new( + pub fn new( lp: &ServerLoginParam, socks5_config: Option, addr: &str, @@ -303,8 +303,7 @@ impl Imap { provider.strict_tls }), idle_interrupt, - ) - .await?; + )?; Ok(imap) } diff --git a/src/mimefactory.rs b/src/mimefactory.rs index ed7f3cf65..0221ff7b6 100644 --- a/src/mimefactory.rs +++ b/src/mimefactory.rs @@ -1177,17 +1177,17 @@ impl<'a> MimeFactory<'a> { if command == SystemMessage::MultiDeviceSync && self.is_e2ee_guaranteed() { let json = self.msg.param.get(Param::Arg).unwrap_or_default(); let ids = self.msg.param.get(Param::Arg2).unwrap_or_default(); - parts.push(context.build_sync_part(json.to_string()).await); + parts.push(context.build_sync_part(json.to_string())); self.sync_ids_to_delete = Some(ids.to_string()); } else if command == SystemMessage::WebxdcStatusUpdate { let json = self.msg.param.get(Param::Arg).unwrap_or_default(); - parts.push(context.build_status_update_part(json).await); + parts.push(context.build_status_update_part(json)); } else if self.msg.viewtype == Viewtype::Webxdc { if let Some(json) = context .render_webxdc_status_update_object(self.msg.id, None) .await? { - parts.push(context.build_status_update_part(&json).await); + parts.push(context.build_status_update_part(&json)); } } diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 877608769..1b3e95ea5 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -392,15 +392,10 @@ impl MimeMessage { /// Parses system messages. fn parse_system_message_headers(&mut self, context: &Context) { if self.get_header(HeaderDef::AutocryptSetupMessage).is_some() { - self.parts = self - .parts - .iter() - .filter(|part| { - part.mimetype.is_none() - || part.mimetype.as_ref().unwrap().as_ref() == MIME_AC_SETUP_FILE - }) - .cloned() - .collect(); + self.parts.retain(|part| { + part.mimetype.is_none() + || part.mimetype.as_ref().unwrap().as_ref() == MIME_AC_SETUP_FILE + }); if self.parts.len() == 1 { self.is_system_message = SystemMessage::AutocryptSetupMessage; diff --git a/src/plaintext.rs b/src/plaintext.rs index cdd8a2e1d..738413e1d 100644 --- a/src/plaintext.rs +++ b/src/plaintext.rs @@ -21,7 +21,7 @@ pub struct PlainText { impl PlainText { /// Convert plain text to HTML. /// The function handles quotes, links, fixed and floating text paragraphs. - pub async fn to_html(&self) -> String { + pub fn to_html(&self) -> String { static LINKIFY_MAIL_RE: Lazy = Lazy::new(|| regex::Regex::new(r#"\b([\w.\-+]+@[\w.\-]+)\b"#).unwrap()); @@ -111,8 +111,7 @@ http://link-at-start-of-line.org flowed: false, delsp: false, } - .to_html() - .await; + .to_html(); assert_eq!( html, r##" @@ -134,8 +133,7 @@ line with https://link-mid-of-line.org @@ -153,8 +151,7 @@ line with <http://encapsulated.l flowed: false, delsp: false, } - .to_html() - .await; + .to_html(); assert_eq!( html, r#" @@ -172,8 +169,7 @@ line with nohttp://no.link here
flowed: false, delsp: false, } - .to_html() - .await; + .to_html(); assert_eq!( html, r#" @@ -191,8 +187,7 @@ just an address:
foo@bar.org @@ -213,8 +208,7 @@ line still line
flowed: true, delsp: true, } - .to_html() - .await; + .to_html(); assert_eq!( html, r#" @@ -235,8 +229,7 @@ linestill line
flowed: false, delsp: false, } - .to_html() - .await; + .to_html(); assert_eq!( html, r#" diff --git a/src/receive_imf.rs b/src/receive_imf.rs index 7000aca3a..1486ab54c 100644 --- a/src/receive_imf.rs +++ b/src/receive_imf.rs @@ -3121,7 +3121,7 @@ Hello mailinglist!\r\n" let chats = Chatlist::try_load(&t.ctx, 0, None, None).await.unwrap(); assert_eq!(chats.len(), 0); // Test that the message disappeared - t.evtracker.consume_events().await; + t.evtracker.consume_events(); receive_imf(&t.ctx, DC_MAILINGLIST2, false).await.unwrap(); // Check that no notification is displayed for blocked mailing list message. @@ -4949,7 +4949,7 @@ Reply from different address #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_long_filenames() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; @@ -5001,7 +5001,7 @@ Reply from different address /// Tests that contact request is accepted automatically on outgoing message. #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_accept_outgoing() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice1 = tcm.alice().await; let alice2 = tcm.alice().await; let bob1 = tcm.bob().await; @@ -5046,7 +5046,7 @@ Reply from different address #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_outgoing_private_reply_multidevice() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice1 = tcm.alice().await; let alice2 = tcm.alice().await; let bob = tcm.bob().await; @@ -5134,7 +5134,7 @@ Reply from different address #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_no_private_reply_to_blocked_account() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; diff --git a/src/scheduler.rs b/src/scheduler.rs index 069e5dd89..569478ece 100644 --- a/src/scheduler.rs +++ b/src/scheduler.rs @@ -1,6 +1,6 @@ use anyhow::{bail, Context as _, Result}; use async_channel::{self as channel, Receiver, Sender}; -use futures::{join, try_join}; +use futures::try_join; use futures_lite::FutureExt; use tokio::task; @@ -42,7 +42,7 @@ impl Context { pub async fn maybe_network(&self) { let lock = self.scheduler.read().await; if let Some(scheduler) = &*lock { - scheduler.maybe_network().await; + scheduler.maybe_network(); } connectivity::idle_interrupted(lock).await; } @@ -51,32 +51,32 @@ impl Context { pub async fn maybe_network_lost(&self) { let lock = self.scheduler.read().await; if let Some(scheduler) = &*lock { - scheduler.maybe_network_lost().await; + scheduler.maybe_network_lost(); } connectivity::maybe_network_lost(self, lock).await; } pub(crate) async fn interrupt_inbox(&self, info: InterruptInfo) { if let Some(scheduler) = &*self.scheduler.read().await { - scheduler.interrupt_inbox(info).await; + scheduler.interrupt_inbox(info); } } pub(crate) async fn interrupt_smtp(&self, info: InterruptInfo) { if let Some(scheduler) = &*self.scheduler.read().await { - scheduler.interrupt_smtp(info).await; + scheduler.interrupt_smtp(info); } } pub(crate) async fn interrupt_ephemeral_task(&self) { if let Some(scheduler) = &*self.scheduler.read().await { - scheduler.interrupt_ephemeral_task().await; + scheduler.interrupt_ephemeral_task(); } } pub(crate) async fn interrupt_location(&self) { if let Some(scheduler) = &*self.scheduler.read().await { - scheduler.interrupt_location().await; + scheduler.interrupt_location(); } } } @@ -501,45 +501,41 @@ impl Scheduler { Ok(res) } - async fn maybe_network(&self) { - join!( - self.interrupt_inbox(InterruptInfo::new(true)), - self.interrupt_mvbox(InterruptInfo::new(true)), - self.interrupt_sentbox(InterruptInfo::new(true)), - self.interrupt_smtp(InterruptInfo::new(true)) - ); + fn maybe_network(&self) { + self.interrupt_inbox(InterruptInfo::new(true)); + self.interrupt_mvbox(InterruptInfo::new(true)); + self.interrupt_sentbox(InterruptInfo::new(true)); + self.interrupt_smtp(InterruptInfo::new(true)); } - async fn maybe_network_lost(&self) { - join!( - self.interrupt_inbox(InterruptInfo::new(false)), - self.interrupt_mvbox(InterruptInfo::new(false)), - self.interrupt_sentbox(InterruptInfo::new(false)), - self.interrupt_smtp(InterruptInfo::new(false)) - ); + fn maybe_network_lost(&self) { + self.interrupt_inbox(InterruptInfo::new(false)); + self.interrupt_mvbox(InterruptInfo::new(false)); + self.interrupt_sentbox(InterruptInfo::new(false)); + self.interrupt_smtp(InterruptInfo::new(false)); } - async fn interrupt_inbox(&self, info: InterruptInfo) { - self.inbox.interrupt(info).await; + fn interrupt_inbox(&self, info: InterruptInfo) { + self.inbox.interrupt(info); } - async fn interrupt_mvbox(&self, info: InterruptInfo) { - self.mvbox.interrupt(info).await; + fn interrupt_mvbox(&self, info: InterruptInfo) { + self.mvbox.interrupt(info); } - async fn interrupt_sentbox(&self, info: InterruptInfo) { - self.sentbox.interrupt(info).await; + fn interrupt_sentbox(&self, info: InterruptInfo) { + self.sentbox.interrupt(info); } - async fn interrupt_smtp(&self, info: InterruptInfo) { - self.smtp.interrupt(info).await; + fn interrupt_smtp(&self, info: InterruptInfo) { + self.smtp.interrupt(info); } - async fn interrupt_ephemeral_task(&self) { + fn interrupt_ephemeral_task(&self) { self.ephemeral_interrupt_send.try_send(()).ok(); } - async fn interrupt_location(&self) { + fn interrupt_location(&self) { self.location_interrupt_send.try_send(()).ok(); } @@ -603,7 +599,7 @@ impl ConnectionState { Ok(()) } - async fn interrupt(&self, info: InterruptInfo) { + fn interrupt(&self, info: InterruptInfo) { // Use try_send to avoid blocking on interrupts. self.idle_interrupt_sender.try_send(info).ok(); } @@ -637,8 +633,8 @@ impl SmtpConnectionState { } /// Interrupt any form of idle. - async fn interrupt(&self, info: InterruptInfo) { - self.state.interrupt(info).await; + fn interrupt(&self, info: InterruptInfo) { + self.state.interrupt(info); } /// Shutdown this connection completely. @@ -682,8 +678,8 @@ impl ImapConnectionState { } /// Interrupt any form of idle. - async fn interrupt(&self, info: InterruptInfo) { - self.state.interrupt(info).await; + fn interrupt(&self, info: InterruptInfo) { + self.state.interrupt(info); } /// Shutdown this connection completely. diff --git a/src/securejoin.rs b/src/securejoin.rs index 9f25fbb34..75b0ccbe0 100644 --- a/src/securejoin.rs +++ b/src/securejoin.rs @@ -696,7 +696,7 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_setup_contact() { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; assert_eq!( @@ -910,7 +910,7 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_setup_contact_bob_knows_alice() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; @@ -1035,7 +1035,7 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_setup_contact_concurrent_calls() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; @@ -1066,7 +1066,7 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_secure_join() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; diff --git a/src/smtp.rs b/src/smtp.rs index a3affdfce..a9fc3ec1a 100644 --- a/src/smtp.rs +++ b/src/smtp.rs @@ -64,7 +64,7 @@ impl Smtp { /// Return true if smtp was connected but is not known to /// have been successfully used the last 60 seconds - pub async fn has_maybe_stale_connection(&self) -> bool { + pub fn has_maybe_stale_connection(&self) -> bool { if let Some(last_success) = self.last_success { SystemTime::now() .duration_since(last_success) @@ -77,7 +77,7 @@ impl Smtp { } /// Check whether we are connected. - pub async fn is_connected(&self) -> bool { + pub fn is_connected(&self) -> bool { self.transport .as_ref() .map(|t| t.is_connected()) @@ -86,12 +86,12 @@ impl Smtp { /// Connect using configured parameters. pub async fn connect_configured(&mut self, context: &Context) -> Result<()> { - if self.has_maybe_stale_connection().await { + if self.has_maybe_stale_connection() { info!(context, "Closing stale connection"); self.disconnect().await; } - if self.is_connected().await { + if self.is_connected() { return Ok(()); } @@ -117,7 +117,7 @@ impl Smtp { addr: &str, provider_strict_tls: bool, ) -> Result<()> { - if self.is_connected().await { + if self.is_connected() { warn!(context, "SMTP already connected."); return Ok(()); } diff --git a/src/sync.rs b/src/sync.rs index 326ed53bd..041980ab0 100644 --- a/src/sync.rs +++ b/src/sync.rs @@ -185,7 +185,7 @@ impl Context { } } - pub(crate) async fn build_sync_part(&self, json: String) -> PartBuilder { + pub(crate) fn build_sync_part(&self, json: String) -> PartBuilder { PartBuilder::new() .content_type(&"application/json".parse::().unwrap()) .header(( diff --git a/src/test_utils.rs b/src/test_utils.rs index 3e95b81f2..cca04b8e6 100644 --- a/src/test_utils.rs +++ b/src/test_utils.rs @@ -44,7 +44,7 @@ pub struct TestContextManager { } impl TestContextManager { - pub async fn new() -> Self { + pub fn new() -> Self { let (log_tx, _log_sink) = LogSink::create(); Self { log_tx, _log_sink } } @@ -858,7 +858,7 @@ impl EventTracker { } /// Consumes all pending events. - pub async fn consume_events(&self) { + pub fn consume_events(&self) { while self.try_recv().is_ok() {} } } @@ -1039,7 +1039,7 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_with_both() { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; diff --git a/src/tests/aeap.rs b/src/tests/aeap.rs index 5e6ddfc78..7391e87b1 100644 --- a/src/tests/aeap.rs +++ b/src/tests/aeap.rs @@ -18,7 +18,7 @@ use crate::test_utils::TestContextManager; #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_change_primary_self_addr() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; @@ -130,7 +130,7 @@ async fn check_aeap_transition( // the case where Bob already had contact with Alice's new address const ALICE_NEW_ADDR: &str = "fiona@example.net"; - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; @@ -362,7 +362,7 @@ async fn get_last_info_msg(t: &TestContext, chat_id: ChatId) -> Option /// to make Bob think that there was a transition to Fiona's address. #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_aeap_replay_attack() -> Result<()> { - let mut tcm = TestContextManager::new().await; + let mut tcm = TestContextManager::new(); let alice = tcm.alice().await; let bob = tcm.bob().await; diff --git a/src/webxdc.rs b/src/webxdc.rs index 087fc607d..9baf25f76 100644 --- a/src/webxdc.rs +++ b/src/webxdc.rs @@ -445,7 +445,7 @@ impl Context { } } - pub(crate) async fn build_status_update_part(&self, json: &str) -> PartBuilder { + pub(crate) fn build_status_update_part(&self, json: &str) -> PartBuilder { PartBuilder::new() .content_type(&"application/json".parse::().unwrap()) .header((