From 25fcfd5b7cab41b46a5e1472dd86d6f4faa716bf Mon Sep 17 00:00:00 2001
From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
Date: Mon, 8 Jan 2018 16:20:37 -0500
Subject: [PATCH] datatransfer: fix deadlock

Mutex deadlock occuring during file transfer creation.
Exchanging some calls to fix the situation.

Change-Id: I2f0108e63e89a13e3f6f2c1b1e096fbf9a6a1290
Reviewed-by: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
---
 src/data_transfer.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/data_transfer.cpp b/src/data_transfer.cpp
index e7937242c4..728a566be9 100644
--- a/src/data_transfer.cpp
+++ b/src/data_transfer.cpp
@@ -319,9 +319,9 @@ std::shared_ptr<DataTransfer>
 DataTransferFacade::Impl::createFileTransfer(const std::string& file_path,
                                              const std::string& display_name)
 {
-    std::lock_guard<std::mutex> lk {mapMutex_};
     auto id = generateUID();
     auto transfer = std::make_shared<FileTransfer>(id, file_path, display_name);
+    std::lock_guard<std::mutex> lk {mapMutex_};
     map_.emplace(id, transfer);
     return transfer;
 }
@@ -330,9 +330,9 @@ std::shared_ptr<IncomingFileTransfer>
 DataTransferFacade::Impl::createIncomingFileTransfer(const std::string& display_name,
                                                      std::size_t offset)
 {
-    std::lock_guard<std::mutex> lk {mapMutex_};
     auto id = generateUID();
     auto transfer = std::make_shared<IncomingFileTransfer>(id, display_name, offset);
+    std::lock_guard<std::mutex> lk {mapMutex_};
     map_.emplace(id, transfer);
     return transfer;
 }
-- 
GitLab