summaryrefslogtreecommitdiffstats
path: root/libtorrent/src/kademlia/closest_nodes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libtorrent/src/kademlia/closest_nodes.cpp')
-rw-r--r--libtorrent/src/kademlia/closest_nodes.cpp7
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);
}