diff --git a/include/opendht/network_engine.h b/include/opendht/network_engine.h index eae68348f2a6e828e00691fbfffe728c84d07149..e85366f24b3e8907d6e31aea6f0e22f505eb3a31 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 d509c2be6cca6fe7aadd29016bfab867e0110d59..4dc267b866abc91c8cf9d8c783b3260ef033c056 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) {