diff options
Diffstat (limited to 'libtorrent/src/kademlia/closest_nodes.cpp')
-rw-r--r-- | libtorrent/src/kademlia/closest_nodes.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libtorrent/src/kademlia/closest_nodes.cpp b/libtorrent/src/kademlia/closest_nodes.cpp index 7551e806f..a11fe2559 100644 --- a/libtorrent/src/kademlia/closest_nodes.cpp +++ b/libtorrent/src/kademlia/closest_nodes.cpp @@ -110,12 +110,13 @@ void closest_nodes::invoke(node_id const& id, udp::endpoint addr) void closest_nodes::done() { std::vector<node_entry> results; - int result_size = m_table.bucket_size(); - if (result_size > (int)m_results.size()) result_size = (int)m_results.size(); + int num_results = m_table.bucket_size(); for (std::vector<result>::iterator i = m_results.begin() - , end(m_results.begin() + result_size); i != end; ++i) + , end(m_results.end()); i != end && num_results >= 0; ++i) { + if (i->flags & result::no_id) continue; results.push_back(node_entry(i->id, i->addr)); + --num_results; } m_done_callback(results); } |