From f4162664c3b8163bf02f0c69d1d8f3a482d79d70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20D=C3=A9saulniers?= <rostydela@gmail.com> Date: Tue, 27 Oct 2015 17:42:51 -0400 Subject: [PATCH] remove periodic Announce repeat functionnality --- src/dht.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/dht.cpp b/src/dht.cpp index 67c3a037..787ad451 100644 --- a/src/dht.cpp +++ b/src/dht.cpp @@ -2505,14 +2505,19 @@ Dht::processMessage(const uint8_t *buf, size_t buflen, const sockaddr *from, soc sr->get_step_time = now; // If the value was just successfully announced, call the callback - for (auto& a : sr->announce) { - if (!a.callback || !a.value || a.value->id != msg.value_id) - continue; + auto a_to_remove = std::remove_if(sr->announce.begin(), sr->announce.end(), [&](Announce &a) { + if (!a.value || a.value->id != msg.value_id) + return false; if (sr->isAnnounced(msg.value_id, getType(a.value->type), now)) { - a.callback(true, sr->getNodes()); - a.callback = nullptr; + if (a.callback) { + a.callback(true, sr->getNodes()); + a.callback = nullptr; + } + return true; } - } + return false; + }); + sr->announce.erase(a_to_remove, sr->announce.end()); } } else if (msg.tid.matches(TransPrefix::LISTEN, &ttid)) { DHT_DEBUG("Got reply to listen."); -- GitLab