mirror of
https://github.com/chatmail/core.git
synced 2026-04-28 19:06:35 +03:00
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:
@@ -202,8 +202,11 @@ impl Session {
|
|||||||
let mut uid_message_ids: BTreeMap<u32, String> = BTreeMap::new();
|
let mut uid_message_ids: BTreeMap<u32, String> = BTreeMap::new();
|
||||||
uid_message_ids.insert(uid, rfc724_mid);
|
uid_message_ids.insert(uid, rfc724_mid);
|
||||||
let (sender, receiver) = async_channel::unbounded();
|
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() {
|
if receiver.recv().await.is_err() {
|
||||||
bail!("Failed to fetch UID {uid}");
|
bail!("Failed to fetch UID {uid}");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user