diff --git a/tools/dhtnode.cpp b/tools/dhtnode.cpp index 8c1da8e6cfd003ece5aa61231b1de7ac6898942c..66808cb9cceee840b779cd446b70f00a10d8ab20 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();