From d062f7bd24ed6adc2cc128f3512132aa5c0cb3b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Sun, 24 Apr 2016 18:32:09 -0400 Subject: [PATCH] make sendPing use Node by default previous code was duplicating nodes, causing sending many "dubious node" pings to the same node. --- include/opendht/network_engine.h | 8 ++++---- src/network_engine.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/opendht/network_engine.h b/include/opendht/network_engine.h index eae68348..e85366f2 100644 --- a/include/opendht/network_engine.h +++ b/include/opendht/network_engine.h @@ -396,11 +396,11 @@ public: * Requests * **************/ std::shared_ptr<Request> - sendPing(std::shared_ptr<Node> n, RequestCb on_done, RequestExpiredCb on_expired) { - return sendPing((sockaddr*)&n->ss, n->sslen, on_done, on_expired); - } + sendPing(std::shared_ptr<Node> n, RequestCb on_done, RequestExpiredCb on_expired); std::shared_ptr<Request> - sendPing(const sockaddr* sa, socklen_t salen, RequestCb on_done, RequestExpiredCb on_expired); + sendPing(const sockaddr* sa, socklen_t salen, RequestCb on_done, RequestExpiredCb on_expired) { + return sendPing(std::make_shared<Node>(zeroes, sa, salen), on_done, on_expired); + } std::shared_ptr<Request> sendFindNode(std::shared_ptr<Node> n, const InfoHash& target, diff --git a/src/network_engine.cpp b/src/network_engine.cpp index d509c2be..4dc267b8 100644 --- a/src/network_engine.cpp +++ b/src/network_engine.cpp @@ -272,7 +272,7 @@ NetworkEngine::send(const char *buf, size_t len, int flags, const sockaddr *sa, } std::shared_ptr<NetworkEngine::Request> -NetworkEngine::sendPing(const sockaddr* sa, socklen_t salen, RequestCb on_done, RequestExpiredCb on_expired) { +NetworkEngine::sendPing(std::shared_ptr<Node> node, RequestCb on_done, RequestExpiredCb on_expired) { auto tid = TransId {TransPrefix::PING, getNewTid()}; msgpack::sbuffer buffer; msgpack::packer<msgpack::sbuffer> pk(&buffer); @@ -288,7 +288,7 @@ NetworkEngine::sendPing(const sockaddr* sa, socklen_t salen, RequestCb on_done, pk.pack(std::string("v")); pk.pack(my_v); Blob b {buffer.data(), buffer.data() + buffer.size()}; - std::shared_ptr<Request> req(new Request {tid.getTid(), std::make_shared<Node>(InfoHash {}, sa, salen), std::move(b), + std::shared_ptr<Request> req(new Request {tid.getTid(), node, std::move(b), [=](std::shared_ptr<Request> req_status, ParsedMessage&&) { DHT_LOG.DEBUG("Got pong from %s", print_addr(req_status->node->ss, req_status->node->sslen).c_str()); if (on_done) { -- GitLab