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();