diff --git a/tools/dhtchat.cpp b/tools/dhtchat.cpp
index 981b551dda281b1b2715e17d906605f7ccb4189f..61e83d2efdff6ffc66895a3448402b1651160192 100644
--- a/tools/dhtchat.cpp
+++ b/tools/dhtchat.cpp
@@ -48,10 +48,6 @@ main(int argc, char **argv)
 {
     auto params = parseArgs(argc, argv);
 
-    // TODO: remove with GnuTLS >= 3.3
-    if (int rc = gnutls_global_init())
-        throw std::runtime_error(std::string("Error initializing GnuTLS: ")+gnutls_strerror(rc));
-
     DhtRunner dht;
     dht.run(params.port, dht::crypto::generateIdentity("DHT Chat Node"), true, params.network);
 
@@ -129,6 +125,5 @@ main(int argc, char **argv)
 
     std::cout << std::endl <<  "Stopping node..." << std::endl;
     dht.join();
-    gnutls_global_deinit();
     return 0;
 }
diff --git a/tools/dhtnode.cpp b/tools/dhtnode.cpp
index 8bc89c9e2dc6c7c9a0908b22847bd65ed47aa2cd..f169c2e6205728e0381af11acd0fea8f4a0d5cda 100644
--- a/tools/dhtnode.cpp
+++ b/tools/dhtnode.cpp
@@ -71,7 +71,7 @@ void print_help() {
               << std::endl;
 }
 
-void cmd_loop(std::shared_ptr<DhtRunner>& dht, std::map<std::string, indexation::Pht> indexes, dht_params& params)
+void cmd_loop(std::shared_ptr<DhtRunner>& dht, dht_params& params)
 {
     print_node_info(dht, params);
     std::cout << " (type 'h' or 'help' for a list of possible commands)" << std::endl << std::endl;
@@ -79,6 +79,8 @@ void cmd_loop(std::shared_ptr<DhtRunner>& dht, std::map<std::string, indexation:
     // using the GNU History API
     using_history();
 
+    std::map<std::string, indexation::Pht> indexes;
+
     while (true)
     {
         // using the GNU Readline API
@@ -329,11 +331,7 @@ void cmd_loop(std::shared_ptr<DhtRunner>& dht, std::map<std::string, indexation:
 int
 main(int argc, char **argv)
 {
-    if (int rc = gnutls_global_init())  // TODO: remove with GnuTLS >= 3.3
-        throw std::runtime_error(std::string("Error initializing GnuTLS: ")+gnutls_strerror(rc));
-
     auto dht = std::make_shared<DhtRunner>();
-    std::map<std::string, indexation::Pht> indexes;
 
     try {
         auto params = parseArgs(argc, argv);
@@ -369,7 +367,7 @@ main(int argc, char **argv)
             while (true)
                 std::this_thread::sleep_for(std::chrono::seconds(30));
         } else {
-            cmd_loop(dht, indexes, params);
+            cmd_loop(dht, params);
         }
 
     } catch(const std::exception&e) {
@@ -392,7 +390,5 @@ main(int argc, char **argv)
     cv.wait(lk, [&](){ return done.load(); });
 
     dht->join();
-    gnutls_global_deinit();
-
     return 0;
 }
diff --git a/tools/dhtscanner.cpp b/tools/dhtscanner.cpp
index f93c31e7f17f2c76845a5bd3458a1bb481194f6b..86dd7100a5ec50621c800f7eb81769ec5981aed4 100644
--- a/tools/dhtscanner.cpp
+++ b/tools/dhtscanner.cpp
@@ -70,12 +70,6 @@ int
 main(int argc, char **argv)
 {
     auto params = parseArgs(argc, argv);
-
-    // TODO: remove with GnuTLS >= 3.3
-    int rc = gnutls_global_init();
-    if (rc != GNUTLS_E_SUCCESS)
-        throw std::runtime_error(std::string("Error initializing GnuTLS: ")+gnutls_strerror(rc));
-
     auto ca_tmp = dht::crypto::generateIdentity("DHT Node CA");
     auto crt_tmp = dht::crypto::generateIdentity("Scanner node", ca_tmp);
 
@@ -110,6 +104,5 @@ main(int argc, char **argv)
         std::cout << "Node " << *n << std::endl;
 
     dht.join();
-    gnutls_global_deinit();
     return 0;
 }