diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ad5e3b42..968aa57c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ ### Fixes - fix splitting off text from webxdc messages #3032 +- call slow `delete_expired_imap_messages()` less often #3037 ## 1.72.0 diff --git a/src/imap.rs b/src/imap.rs index 6115e58b0..862fc3fb0 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -28,7 +28,6 @@ use crate::context::Context; use crate::dc_receive_imf::{ dc_receive_imf_inner, from_field_to_contact_id, get_prefetch_parent_message, ReceivedMsg, }; -use crate::ephemeral::delete_expired_imap_messages; use crate::events::EventType; use crate::headerdef::{HeaderDef, HeaderDefMap}; use crate::job::{self, Action}; @@ -459,9 +458,6 @@ impl Imap { .await .context("fetch_new_messages")?; - // Mark expired messages for deletion. - delete_expired_imap_messages(context).await?; - self.move_messages(context, watch_folder) .await .context("move_messages")?; diff --git a/src/scheduler.rs b/src/scheduler.rs index 7489961bc..2cff9b7d5 100644 --- a/src/scheduler.rs +++ b/src/scheduler.rs @@ -1,4 +1,4 @@ -use anyhow::{bail, Result}; +use anyhow::{bail, Context as _, Result}; use async_std::prelude::*; use async_std::{ channel::{self, Receiver, Sender}, @@ -8,6 +8,7 @@ use async_std::{ use crate::config::Config; use crate::context::Context; use crate::dc_tools::maybe_add_time_based_warnings; +use crate::ephemeral::delete_expired_imap_messages; use crate::imap::Imap; use crate::job::{self, Thread}; use crate::smtp::{send_smtp_messages, Smtp}; @@ -160,6 +161,14 @@ async fn fetch_idle(ctx: &Context, connection: &mut Imap, folder: Config) -> Int return connection.fake_idle(ctx, Some(watch_folder)).await; } + // Mark expired messages for deletion. + if let Err(err) = delete_expired_imap_messages(ctx) + .await + .context("delete_expired_imap_messages failed") + { + warn!(ctx, "{:#}", err); + } + // Scan other folders before fetching from watched folder. This may result in the // messages being moved into the watched folder, for example from the Spam folder to // the Inbox folder.