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) {