From 1408690a9a0d0976c17397be33bd4e886088a914 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Wed, 2 Dec 2020 14:16:21 +0200 Subject: [PATCH] melib/imap: don't retry watch conn on non-network error --- melib/src/backends/imap.rs | 2 ++ melib/src/backends/imap/watch.rs | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/melib/src/backends/imap.rs b/melib/src/backends/imap.rs index 4988e958..4129bb66 100644 --- a/melib/src/backends/imap.rs +++ b/melib/src/backends/imap.rs @@ -499,6 +499,8 @@ impl MailBackend for ImapType { let mut main_conn_lck = timeout(uid_store.timeout, main_conn.lock()).await?; if err.kind.is_network() { uid_store.is_online.lock().unwrap().1 = Err(err.clone()); + } else { + return Err(err); } debug!("Watch failure: {}", err.to_string()); match timeout(uid_store.timeout, main_conn_lck.connect()) diff --git a/melib/src/backends/imap/watch.rs b/melib/src/backends/imap/watch.rs index c913710c..48a2e80b 100644 --- a/melib/src/backends/imap/watch.rs +++ b/melib/src/backends/imap/watch.rs @@ -408,14 +408,16 @@ pub async fn examine_updates( } } if uid_store.keep_offline_cache { - cache_handle - .insert_envelopes(mailbox_hash, &v) - .chain_err_summary(|| { - format!( - "Could not save envelopes in cache for mailbox {}", - mailbox.imap_path() - ) - })?; + if !cache_handle.mailbox_state(mailbox_hash)?.is_none() { + cache_handle + .insert_envelopes(mailbox_hash, &v) + .chain_err_summary(|| { + format!( + "Could not save envelopes in cache for mailbox {}", + mailbox.imap_path() + ) + })?; + } } for FetchResponse { uid, envelope, .. } in v {