From 74aae03b5f799b8398f406c72fa51d6a013dae44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Thu, 10 Dec 2015 13:18:13 -0500
Subject: [PATCH] dhtnode: gracefully stop node

---
 tools/dhtnode.cpp | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/tools/dhtnode.cpp b/tools/dhtnode.cpp
index 8c1da8e6..66808cb9 100644
--- a/tools/dhtnode.cpp
+++ b/tools/dhtnode.cpp
@@ -265,6 +265,21 @@ main(int argc, char **argv)
         std::cout << std::endl <<  e.what() << std::endl;
     }
 
+    std::condition_variable cv;
+    std::mutex m;
+    std::atomic_bool done {false};
+
+    dht.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.load(); });
+
     dht.join();
     gnutls_global_deinit();
 
-- 
GitLab