From c49072951cc5f695a64fb8738b390bd4f0119d89 Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Thu, 22 Jun 2023 11:53:30 -0400
Subject: [PATCH] converations: prevent deadlock

The conversation requests doesn't need to be locked when getting trust requests and may provoke a deadlock.

Gitlab: #864
Change-Id: I64e11a9ef1343f51785479f2b577fffa8ebfbf7c
---
 src/jamidht/conversation_module.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/jamidht/conversation_module.cpp b/src/jamidht/conversation_module.cpp
index 8b352e26df..547eea4869 100644
--- a/src/jamidht/conversation_module.cpp
+++ b/src/jamidht/conversation_module.cpp
@@ -1236,8 +1236,9 @@ ConversationModule::loadConversations()
     // Note: This is only to homogeneize trust and convRequests
     std::vector<std::string> invalidPendingRequests;
     {
+        auto requests = acc->getTrustRequests();
         std::lock_guard<std::mutex> lk(pimpl_->conversationsRequestsMtx_);
-        for (const auto& request : acc->getTrustRequests()) {
+        for (const auto& request : requests) {
             auto itConvId = request.find(libjami::Account::TrustRequest::CONVERSATIONID);
             auto itConvFrom = request.find(libjami::Account::TrustRequest::FROM);
             if (itConvId != request.end() && itConvFrom != request.end()) {
-- 
GitLab