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