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