From 13fba8d35ba2b1ffd32697f4e5268d2fc5dcc04d Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Thu, 9 May 2019 23:11:57 +0300 Subject: [PATCH] melib: drop MutexGuard before calling add_path_to_index In some cases add_path_to_index was called with the mutex already held, and a deadlock occurred. --- melib/src/mailbox/backends/maildir/backend.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/melib/src/mailbox/backends/maildir/backend.rs b/melib/src/mailbox/backends/maildir/backend.rs index 45c9c0dc..20209125 100644 --- a/melib/src/mailbox/backends/maildir/backend.rs +++ b/melib/src/mailbox/backends/maildir/backend.rs @@ -229,6 +229,11 @@ impl MailBackend for MaildirType { } else { /* Did we just miss a Create event? In any case, create * envelope. */ + + /* Drop the lock manually as add_path_to_index would deadlock + * */ + drop(index_lock); + drop(hash_indexes_lock); if let Some(env) = add_path_to_index( &hash_indexes, folder_hash, @@ -311,6 +316,10 @@ impl MailBackend for MaildirType { .unwrap() .to_path_buf(); debug!("filename = {:?}", file_name); + /* Drop the lock manually as add_path_to_index would deadlock + * */ + drop(index_lock); + drop(hash_indexes_lock); if let Some(env) = add_path_to_index( &hash_indexes, folder_hash,