mirror of
https://github.com/JulienMalka/snowfield.git
synced 2025-03-25 21:30:52 +01:00
46 lines
1.8 KiB
Diff
46 lines
1.8 KiB
Diff
From 1282e77ea96e5154011b3d4607c15140003ee2e6 Mon Sep 17 00:00:00 2001
|
|
From: mdecimus <mauro@stalw.art>
|
|
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<T: SessionStream> SessionData<T> {
|
|
|
|
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::<Vec<_>>()
|
|
+ );
|
|
+ continue;
|
|
+ };
|
|
let mut has_recursive_match = false;
|
|
if recursive_match {
|
|
let prefix = format!("{}/", mailbox_name);
|
|
|