From 459217b6d6935585d24593d04fceec2d166bf1b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Wed, 17 Jul 2019 14:50:06 -0400
Subject: [PATCH] dhtnode: avoid deadlock in shutdown

---
 tools/dhtnode.cpp | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/tools/dhtnode.cpp b/tools/dhtnode.cpp
index a29495fb..add30dc2 100644
--- a/tools/dhtnode.cpp
+++ b/tools/dhtnode.cpp
@@ -578,15 +578,19 @@ main(int argc, char **argv)
     std::mutex m;
     bool done {false};
 
-    node->shutdown([&]()
-    {
-        done = true;
+    node->shutdown([&]() {
+        {
+            std::lock_guard<std::mutex> lk(m);
+            done = true;
+        }
         cv.notify_all();
     });
 
     // wait for shutdown
-    std::unique_lock<std::mutex> lk(m);
-    cv.wait(lk, [&](){ return done; });
+    {
+        std::unique_lock<std::mutex> lk(m);
+        cv.wait(lk, [&](){ return done; });
+    }
 
     node->join();
 #ifdef WIN32_NATIVE
-- 
GitLab