From 1282e77ea96e5154011b3d4607c15140003ee2e6 Mon Sep 17 00:00:00 2001 From: mdecimus Date: Sun, 9 Mar 2025 17:47:40 +0100 Subject: [PATCH] Do not panic when mailboxId is not found (closes #1293) --- crates/imap/src/op/list.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/crates/imap/src/op/list.rs b/crates/imap/src/op/list.rs index 250db4be..4231ec1b 100644 --- a/crates/imap/src/op/list.rs +++ b/crates/imap/src/op/list.rs @@ -22,6 +22,7 @@ use imap_proto::{ }, receiver::Request, }; +use trc::StoreEvent; use super::ImapContext; @@ -202,7 +203,22 @@ impl SessionData { for (mailbox_name, mailbox_id) in &account.mailbox_names { if matches_pattern(&patterns, mailbox_name) { - let mailbox = account.mailbox_state.get(mailbox_id).unwrap(); + let mailbox = if let Some(mailbox) = account.mailbox_state.get(mailbox_id) { + mailbox + } else { + trc::event!( + Store(StoreEvent::UnexpectedError), + Details = "IMAP mailbox no longer present in account state", + Id = *mailbox_id, + Details = account + .mailbox_state + .keys() + .copied() + .map(trc::Value::from) + .collect::>() + ); + continue; + }; let mut has_recursive_match = false; if recursive_match { let prefix = format!("{}/", mailbox_name);