From 535d04f4f0a5fb48a20551eedca555445c5b8e94 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Tue, 13 Oct 2020 21:17:27 +0300 Subject: [PATCH] melib/imap/untagged: lower mbox count on EXPUNGE events --- melib/src/backends/imap/untagged.rs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/melib/src/backends/imap/untagged.rs b/melib/src/backends/imap/untagged.rs index 27fcf570b..60b29cc2f 100644 --- a/melib/src/backends/imap/untagged.rs +++ b/melib/src/backends/imap/untagged.rs @@ -107,6 +107,8 @@ impl ImapConnection { Some(v) => v, None => return Ok(true), }; + mailbox.exists.lock().unwrap().remove(deleted_hash); + mailbox.unseen.lock().unwrap().remove(deleted_hash); self.uid_store .hash_index .lock() @@ -388,19 +390,22 @@ impl ImapConnection { } }; debug!("fetch uid {} {:?}", uid, flags); - let env_hash = self - .uid_store - .uid_index - .lock() - .unwrap() - .get(&(mailbox_hash, uid)) - .copied(); - if let Some(env_hash) = env_hash { + if let Some(env_hash) = { + let temp = self + .uid_store + .uid_index + .lock() + .unwrap() + .get(&(mailbox_hash, uid)) + .copied(); + temp + } { if !flags.0.intersects(crate::email::Flag::SEEN) { mailbox.unseen.lock().unwrap().insert_new(env_hash); } else { mailbox.unseen.lock().unwrap().remove(env_hash); } + mailbox.exists.lock().unwrap().insert_new(env_hash); if let Some(modseq) = modseq { self.uid_store .modseq