From 69ffe0b284a1868997b054ed7db0b2fc15c14edb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Wed, 1 May 2019 10:34:54 -0400
Subject: [PATCH] jamiaccount: fix deadlock during device revocation

Change-Id: I8ef7df59cd972868fda4e95dc0cc36ba123ffa44
---
 src/jamidht/jamiaccount.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index 536038b29a..ad4fbf9677 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -1146,7 +1146,7 @@ JamiAccount::revokeDevice(const std::string& password, const std::string& device
             emitSignal<DRing::ConfigurationSignal::DeviceRevocationEnded>(getAccountID(), device, 2);
             return;
         }
-        std::lock_guard<std::mutex> lock(deviceListMutex_);
+        std::unique_lock<std::mutex> lock(deviceListMutex_);
         foundAccountDevice(crt);
         AccountArchive a;
         try {
@@ -1168,6 +1168,7 @@ JamiAccount::revokeDevice(const std::string& password, const std::string& device
         saveKnownDevices();
         emitSignal<DRing::ConfigurationSignal::DeviceRevocationEnded>(getAccountID(), device, 0);
         emitSignal<DRing::ConfigurationSignal::KnownDevicesChanged>(getAccountID(), getKnownDevices());
+        lock.unlock();
         syncDevices();
     });
     return true;
-- 
GitLab