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.
This commit is contained in:
iequidoo
2026-04-15 15:14:01 -03:00
parent 46a1e0e057
commit ad5b0963fb

View File

@@ -202,8 +202,11 @@ impl Session {
let mut uid_message_ids: BTreeMap<u32, String> = 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}");
}