don't include new nodes to routing table until until receive a message from them

This commit is contained in:
orignal committed 2026-10-09 10:55:50 -04:00
1 parent dc3fe66596
commit 88491fbb45
1 file changed
+8 -7
+8 -7
View File
@@ -800,12 +800,13 @@ namespace torrents
if (m_RoutingTable)
{
const auto& [ident, port, query, info, time] = it->second;
if (query != eKRPCQueryAnnouncePeer) // port is rport there
UpdateNode (std::make_shared<Node> (nodeID, ident, port));
switch (query)
{
case eKRPCQueryPing:
{
LogPrint (eLogDebug, "TorrentsDHT: Ping response received");
UpdateNode (std::make_shared<Node> (nodeID, ident, port));
break;
}
case eKRPCQueryGetPeers:
@@ -846,9 +847,9 @@ namespace torrents
while (nodes.size () >= nodeInfo.size ())
{
memcpy (nodeInfo.data (), nodes.data (), nodeInfo.size ());
auto node = UpdateNode (std::make_shared<Node>(nodeInfo));
if (info)
info->AddNode (node);
auto node = std::make_shared<Node>(nodeInfo);
if (info && info->AddNode (node))
SendPingQuery (node->peer, node->port);
nodes = nodes.substr (nodeInfo.size ());
}
if (info)
@@ -880,9 +881,9 @@ namespace torrents
while (nodes.size () >= nodeInfo.size ())
{
memcpy (nodeInfo.data (), nodes.data (), nodeInfo.size ());
auto node = UpdateNode (std::make_shared<Node>(nodeInfo));
if (info && node)
info->AddNode (node);
auto node = std::make_shared<Node>(nodeInfo);
if (info && info->AddNode (node))
SendPingQuery (node->peer, node->port);
nodes = nodes.substr (nodeInfo.size ());
}
if (info)