From f75f8ad76d0b0b84701b1861aad8d84deef4d64a Mon Sep 17 00:00:00 2001 From: link2xt Date: Sun, 10 Apr 2022 21:46:01 +0000 Subject: [PATCH] Interrupt ephemeral loop when new messages are fetched --- src/imap.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/imap.rs b/src/imap.rs index 8da7abff2..6e2f27a3b 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -458,9 +458,15 @@ impl Imap { } self.prepare(context).await?; - self.fetch_new_messages(context, watch_folder, false) + if self + .fetch_new_messages(context, watch_folder, false) .await - .context("fetch_new_messages")?; + .context("fetch_new_messages")? + { + // New messages were fetched, restart ephemeral loop in case these messages will expire + // later. + context.interrupt_ephemeral_task().await; + } self.move_delete_messages(context, watch_folder) .await @@ -658,6 +664,9 @@ impl Imap { Ok(false) } + /// Fetches new messages. + /// + /// Returns true if at least one message was fetched. pub(crate) async fn fetch_new_messages( &mut self, context: &Context,