diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index 8a39fee256110ed0cf5076fb59e1ad41713d2f90..f4b7c655d3f250b5c03427830470ba12a88e2f67 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -684,15 +684,15 @@ DhtRunner::bootstrap(const std::vector<std::pair<sockaddr_storage, socklen_t>>& { std::lock_guard<std::mutex> lck(storage_mtx); pending_ops_prio.emplace([=](SecureDht& dht) mutable { - auto rem = std::make_shared<std::pair<size_t, bool>>(nodes.size(), false); + auto rem = cb ? std::make_shared<std::pair<size_t, bool>>(nodes.size(), false) : nullptr; for (auto& node : nodes) - dht.pingNode((sockaddr*)&node.first, node.second, [rem,cb](bool ok) { + dht.pingNode((sockaddr*)&node.first, node.second, cb ? [rem,cb](bool ok) { auto& r = *rem; r.first--; r.second |= ok; if (not r.first) cb(r.second); - }); + } : DoneCallbackSimple{}); }); cv.notify_all(); }