diff --git a/src/dht.cpp b/src/dht.cpp index 2ae8eb0d..d300639e 100644 --- a/src/dht.cpp +++ b/src/dht.cpp @@ -957,7 +957,15 @@ Dht::searchSendGetValues(std::shared_ptr sr, SearchNode* pn, bool update n->getStatus[query] = network_engine.sendFindNode(n->node, sr->id, -1, - std::bind(&Dht::searchNodeGetDone, this, _1, _2, ws, query), + [this,ws,query](const Request& status, NetworkEngine::RequestAnswer&& answer) { + if (auto sr = ws.lock()) { + if (auto sn = sr->getNode(status.node)) { + sn->getStatus.erase(query); + } + } + searchNodeGetDone(status, std::forward(answer), ws, query); + }, + /* std::bind(&Dht::searchNodeGetDone, this, _1, _2, ws, query), */ std::bind(&Dht::searchNodeGetExpired, this, _1, _2, ws, query)); } else { if (query and not query->select.getSelection().empty()) { diff --git a/src/network_engine.cpp b/src/network_engine.cpp index 674c78f6..f973b985 100644 --- a/src/network_engine.cpp +++ b/src/network_engine.cpp @@ -182,9 +182,8 @@ NetworkEngine::sendRequest(std::shared_ptr& request) { request->start = scheduler.time(); auto e = requests.emplace(request->tid, request); - if (!e.second) { - DHT_LOG.ERR("Request already existed !"); - } + if (!e.second) + DHT_LOG.ERR("Request already existed (tid: %d)!", request->tid); request->node->requested(request); requestStep(request); }