From 717b58fcc604c2ebb2dacdb49f4ca3a643aae599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20D=C3=A9saulniers?= Date: Tue, 29 Mar 2016 18:46:57 -0400 Subject: [PATCH] dht: handling get token only after 'get' request. --- include/opendht/dht.h | 4 ++-- src/dht.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/opendht/dht.h b/include/opendht/dht.h index d19fcb13..e182c1b6 100644 --- a/include/opendht/dht.h +++ b/include/opendht/dht.h @@ -884,11 +884,11 @@ private: void onGetValuesDone(std::shared_ptr status, NetworkEngine::RequestAnswer& a, std::shared_ptr sr); /* when we receive a listen request */ NetworkEngine::RequestAnswer onListen(std::shared_ptr node, InfoHash& hash, Blob& token, size_t rid); - void onListenDone(std::shared_ptr status, NetworkEngine::RequestAnswer& a, std::shared_ptr sr); + void onListenDone(std::shared_ptr& status, NetworkEngine::RequestAnswer& a, std::shared_ptr& sr); /* when we receive an announce request */ NetworkEngine::RequestAnswer onAnnounce(std::shared_ptr node, InfoHash& hash, Blob& token, std::vector> v, time_point created); - void onAnnounceDone(std::shared_ptr status, NetworkEngine::RequestAnswer& a, std::shared_ptr sr); + void onAnnounceDone(std::shared_ptr& status, NetworkEngine::RequestAnswer& a, std::shared_ptr& sr); }; } diff --git a/src/dht.cpp b/src/dht.cpp index 2057f259..b7ddef70 100644 --- a/src/dht.cpp +++ b/src/dht.cpp @@ -802,6 +802,7 @@ Dht::searchSendGetValues(std::shared_ptr sr, SearchNode* pn, bool update auto onDone = [=](std::shared_ptr status, NetworkEngine::RequestAnswer&& answer) mutable { if (sr) { + sr->insertNode(status->node, scheduler.time(), answer.ntoken); onGetValuesDone(status, answer, sr); } }; @@ -2663,7 +2664,6 @@ Dht::onGetValuesDone(std::shared_ptr status, DHT_LOG.DEBUG("[search %s IPv%c] got reply to 'get'", sr->id.toString().c_str(), sr->af == AF_INET ? '4' : '6'); const auto& now = scheduler.time(); - sr->insertNode(status->node, now, a.ntoken); if (not a.ntoken.empty()) { if (!a.values.empty()) { DHT_LOG.DEBUG("[search %s IPv%c] found %u values", @@ -2729,7 +2729,7 @@ Dht::onListen(std::shared_ptr node, InfoHash& hash, Blob& token, size_t ri } void -Dht::onListenDone(std::shared_ptr status, NetworkEngine::RequestAnswer& answer, std::shared_ptr sr) +Dht::onListenDone(std::shared_ptr& status, NetworkEngine::RequestAnswer& answer, std::shared_ptr& sr) { DHT_LOG.DEBUG("Got reply to listen."); if (sr) { @@ -2807,8 +2807,8 @@ Dht::onAnnounce(std::shared_ptr node, InfoHash& hash, Blob& token, std::ve } void -Dht::onAnnounceDone(std::shared_ptr status, NetworkEngine::RequestAnswer& answer, - std::shared_ptr sr) +Dht::onAnnounceDone(std::shared_ptr& status, NetworkEngine::RequestAnswer& answer, + std::shared_ptr& sr) { const auto& now = scheduler.time(); DHT_LOG.DEBUG("[search %s IPv%c] got reply to put!",