From c0327a98819f742143b5c59c35f13b8701322394 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Wed, 11 Dec 2019 11:43:20 -0500
Subject: [PATCH] dhtrunner: fix build without peer discovery

---
 CMakeLists.txt    |  4 +---
 src/dhtrunner.cpp | 18 +++++++++++++++---
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 38001fe5..8f6e3af5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -215,7 +215,7 @@ list (APPEND opendht_HEADERS
 if (OPENDHT_PEER_DISCOVERY)
     list (APPEND opendht_SOURCES src/peer_discovery.cpp)
     list (APPEND opendht_HEADERS include/opendht/peer_discovery.h)
-    add_definitions(-DOPENDHT_PEERDISCOVERY)
+    add_definitions(-DOPENDHT_PEER_DISCOVERY)
 endif()
 
 if (OPENDHT_PYTHON)
@@ -388,8 +388,6 @@ if (OPENDHT_TESTS)
         tests/cryptotester.cpp
         tests/dhtrunnertester.h
         tests/dhtrunnertester.cpp
-        tests/peerdiscoverytester.h
-        tests/peerdiscoverytester.cpp
         tests/threadpooltester.h
         tests/threadpooltester.cpp
     )
diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp
index ff0fd48d..60f8c4d9 100644
--- a/src/dhtrunner.cpp
+++ b/src/dhtrunner.cpp
@@ -20,9 +20,10 @@
 
 #include "dhtrunner.h"
 #include "securedht.h"
-#include "peer_discovery.h"
 #include "network_utils.h"
-
+#ifdef OPENDHT_PEER_DISCOVERY
+#include "peer_discovery.h"
+#endif
 #ifdef OPENDHT_PROXY_CLIENT
 #include "dht_proxy_client.h"
 #endif
@@ -124,7 +125,8 @@ DhtRunner::run(const Config& config, Context&& context)
         {
             std::lock_guard<std::mutex> lck(sock_mtx);
             if (rcv.size() >= RX_QUEUE_MAX_SIZE) {
-                std::cerr << "Dropping packet: queue is full!" << std::endl;
+                if (logger_)
+                    logger_->e("Dropping packet: queue is full!");
                 rcv.pop();
             }
             rcv.emplace(std::move(pkt));
@@ -184,21 +186,28 @@ DhtRunner::run(const Config& config, Context&& context)
     });
 
     if (config.peer_discovery or config.peer_publish) {
+#ifdef OPENDHT_PEER_DISCOVERY
         peerDiscovery_ = context.peerDiscovery ?
             std::move(context.peerDiscovery) :
             std::make_shared<PeerDiscovery>();
+#else
+        std::cerr << "Peer discovery requested but OpenDHT built without peer discovery support." << std::endl;
+#endif
     }
 
     auto netId = config.dht_config.node_config.network;
     if (config.peer_discovery) {
+#ifdef OPENDHT_PEER_DISCOVERY
         peerDiscovery_->startDiscovery<NodeInsertionPack>(PEER_DISCOVERY_DHT_SERVICE, [this, netId](NodeInsertionPack&& v, SockAddr&& addr){
             addr.setPort(v.port);
             if (v.nodeId != dht_->getNodeId() && netId == v.net){
                 bootstrap(v.nodeId, addr);
             }
         });
+#endif
     }
     if (config.peer_publish) {
+#ifdef OPENDHT_PEER_DISCOVERY
         msgpack::sbuffer sbuf_node;
         NodeInsertionPack adc;
         adc.net = netId;
@@ -216,6 +225,7 @@ DhtRunner::run(const Config& config, Context&& context)
             msgpack::pack(sbuf_node, adc);
             peerDiscovery_->startPublish(AF_INET6, PEER_DISCOVERY_DHT_SERVICE, sbuf_node);
         }
+#endif
     }
 }
 
@@ -292,8 +302,10 @@ DhtRunner::join()
             return;
         cv.notify_all();
         bootstrap_cv.notify_all();
+#ifdef OPENDHT_PEER_DISCOVERY
         if (peerDiscovery_)
             peerDiscovery_->stop();
+#endif
         if (dht_)
             if (auto sock = dht_->getSocket())
                 sock->stop();
-- 
GitLab