diff options
author | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2020-12-02 14:16:21 +0200 |
---|---|---|
committer | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2020-12-02 17:10:43 +0200 |
commit | 1408690a9a0d0976c17397be33bd4e886088a914 (patch) | |
tree | 6f17f22d5da4e7b449120e32a08ed909dc1c9419 | |
parent | 76814cea204e13951df708d8990843b74640634c (diff) |
melib/imap: don't retry watch conn on non-network error
-rw-r--r-- | melib/src/backends/imap.rs | 2 | ||||
-rw-r--r-- | 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 { |