diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ca2cadab..75c0935db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Fixes +- avoid reconnection loop when message without Message-ID is marked as seen #3044 + + ## 1.73.0 ### API changes diff --git a/src/imap.rs b/src/imap.rs index 2b2cc705f..90cb90c68 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -1980,7 +1980,7 @@ async fn mark_seen_by_uid( .sql .query_row_optional( "SELECT id, chat_id FROM msgs - WHERE rfc724_mid IN ( + WHERE id > 9 AND rfc724_mid IN ( SELECT rfc724_mid FROM imap WHERE folder=?1 AND uidvalidity=?2 diff --git a/src/scheduler.rs b/src/scheduler.rs index ade60194a..fd4f044d2 100644 --- a/src/scheduler.rs +++ b/src/scheduler.rs @@ -11,6 +11,7 @@ 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::log::LogExt; use crate::smtp::{send_smtp_messages, Smtp}; use self::connectivity::ConnectivityStore; @@ -206,15 +207,11 @@ async fn fetch_idle(ctx: &Context, connection: &mut Imap, folder: Config) -> Int } // Synchronize Seen flags. - if let Err(err) = connection + connection .sync_seen_flags(ctx, &watch_folder) .await .context("sync_seen_flags") - { - connection.trigger_reconnect(ctx).await; - warn!(ctx, "{:#}", err); - return InterruptInfo::new(false); - } + .ok_or_log(ctx); connection.connectivity.set_connected(ctx).await;