diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index 210a5499b3e459238466090f91a04e748d4a6c6c..a73897ff0b63dd5ab621cc753633bcd197e6c746 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -219,46 +219,50 @@ DhtRunner::run(const Config& config, Context&& context) } }); - if (config.peer_discovery or config.peer_publish) { + if (config.proxy_server.empty()) { + if (config.peer_discovery or config.peer_publish) { #ifdef OPENDHT_PEER_DISCOVERY - peerDiscovery_ = context.peerDiscovery ? - std::move(context.peerDiscovery) : - std::make_shared<PeerDiscovery>(); + 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; + std::cerr << "Peer discovery requested but OpenDHT built without peer discovery support." << std::endl; #endif - } + } #ifdef OPENDHT_PEER_DISCOVERY - auto netId = config.dht_config.node_config.network; - if (config.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); - } - }); - } - if (config.peer_publish) { - msgpack::sbuffer sbuf_node; - NodeInsertionPack adc; - adc.net = netId; - adc.nodeId = dht_->getNodeId(); - // IPv4 - if (const auto& bound4 = dht_->getSocket()->getBoundRef(AF_INET)) { - adc.port = bound4.getPort(); - msgpack::pack(sbuf_node, adc); - peerDiscovery_->startPublish(AF_INET, PEER_DISCOVERY_DHT_SERVICE, sbuf_node); + auto netId = config.dht_config.node_config.network; + if (config.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); + } + }); } - // IPv6 - if (const auto& bound6 = dht_->getSocket()->getBoundRef(AF_INET6)) { - adc.port = bound6.getPort(); - sbuf_node.clear(); - msgpack::pack(sbuf_node, adc); - peerDiscovery_->startPublish(AF_INET6, PEER_DISCOVERY_DHT_SERVICE, sbuf_node); + if (config.peer_publish) { + msgpack::sbuffer sbuf_node; + NodeInsertionPack adc; + adc.net = netId; + adc.nodeId = dht_->getNodeId(); + if (auto socket = dht_->getSocket()) { + // IPv4 + if (const auto& bound4 = socket->getBoundRef(AF_INET)) { + adc.port = bound4.getPort(); + msgpack::pack(sbuf_node, adc); + peerDiscovery_->startPublish(AF_INET, PEER_DISCOVERY_DHT_SERVICE, sbuf_node); + } + // IPv6 + if (const auto& bound6 = socket->getBoundRef(AF_INET6)) { + adc.port = bound6.getPort(); + sbuf_node.clear(); + msgpack::pack(sbuf_node, adc); + peerDiscovery_->startPublish(AF_INET6, PEER_DISCOVERY_DHT_SERVICE, sbuf_node); + } + } } - } #endif + } } void