From ad5b0963fb08709eff3bf1aabf02bf440bee4e52 Mon Sep 17 00:00:00 2001 From: iequidoo Date: Wed, 15 Apr 2026 15:14:01 -0300 Subject: [PATCH] fix: fetch_single_msg(): Lock fetch_msgs_mutex before fetching This is to avoid race conditions in `receive_imf` which also happened previously when multi-transport was added. --- src/download.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/download.rs b/src/download.rs index 608aa8045..b36f71921 100644 --- a/src/download.rs +++ b/src/download.rs @@ -202,8 +202,11 @@ impl Session { let mut uid_message_ids: BTreeMap = BTreeMap::new(); uid_message_ids.insert(uid, rfc724_mid); let (sender, receiver) = async_channel::unbounded(); - self.fetch_many_msgs(context, folder, vec![uid], &uid_message_ids, sender) - .await?; + { + let _fetch_msgs_lock_guard = context.fetch_msgs_mutex.lock().await; + self.fetch_many_msgs(context, folder, vec![uid], &uid_message_ids, sender) + .await?; + } if receiver.recv().await.is_err() { bail!("Failed to fetch UID {uid}"); }