forked from premiere/premiere-libtorrent
some DHT fixes + cleanup
This commit is contained in:
parent
0a90844407
commit
56248845ef
|
@ -625,7 +625,10 @@ bool routing_table::add_node(node_entry e)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// this entry belongs in the new bucket
|
// this entry belongs in the new bucket
|
||||||
new_bucket.push_back(*j);
|
if (int(new_bucket.size()) < bucket_size_limit)
|
||||||
|
new_bucket.push_back(*j);
|
||||||
|
else if (int(new_replacement_bucket.size()) < m_bucket_size)
|
||||||
|
new_replacement_bucket.push_back(*j);
|
||||||
j = b.erase(j);
|
j = b.erase(j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,7 +651,7 @@ bool routing_table::add_node(node_entry e)
|
||||||
// this entry belongs in the new bucket
|
// this entry belongs in the new bucket
|
||||||
if (int(new_bucket.size()) < new_bucket_size)
|
if (int(new_bucket.size()) < new_bucket_size)
|
||||||
new_bucket.push_back(*j);
|
new_bucket.push_back(*j);
|
||||||
else
|
else if (int(new_replacement_bucket.size()) < m_bucket_size)
|
||||||
new_replacement_bucket.push_back(*j);
|
new_replacement_bucket.push_back(*j);
|
||||||
}
|
}
|
||||||
j = rb.erase(j);
|
j = rb.erase(j);
|
||||||
|
@ -754,7 +757,12 @@ void routing_table::node_failed(node_id const& id, udp::endpoint const& ep)
|
||||||
m_ips.erase(j->addr.to_v4().to_bytes());
|
m_ips.erase(j->addr.to_v4().to_bytes());
|
||||||
b.erase(j);
|
b.erase(j);
|
||||||
|
|
||||||
j = std::find_if(rb.begin(), rb.end(), boost::bind(&node_entry::pinged, _1) == true);
|
// sort by RTT first, to find the node with the lowest
|
||||||
|
// RTT that is pinged
|
||||||
|
std::sort(rb.begin(), rb.end()
|
||||||
|
, boost::bind(&node_entry::rtt, _1) < boost::bind(&node_entry::rtt, _2));
|
||||||
|
|
||||||
|
j = std::find_if(rb.begin(), rb.end(), boost::bind(&node_entry::pinged, _1));
|
||||||
if (j == rb.end()) j = rb.begin();
|
if (j == rb.end()) j = rb.begin();
|
||||||
b.push_back(*j);
|
b.push_back(*j);
|
||||||
rb.erase(j);
|
rb.erase(j);
|
||||||
|
@ -895,17 +903,6 @@ void routing_table::find_node(node_id const& target
|
||||||
if (int(l.size()) >= count)
|
if (int(l.size()) >= count)
|
||||||
l.resize(count);
|
l.resize(count);
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
routing_table::iterator routing_table::begin() const
|
|
||||||
{
|
|
||||||
// +1 to avoid ourself
|
|
||||||
return iterator(m_buckets.begin() + 1, m_buckets.end());
|
|
||||||
}
|
|
||||||
|
|
||||||
routing_table::iterator routing_table::end() const
|
|
||||||
{
|
|
||||||
return iterator(m_buckets.end(), m_buckets.end());
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
} } // namespace libtorrent::dht
|
} } // namespace libtorrent::dht
|
||||||
|
|
||||||
|
|
|
@ -379,8 +379,8 @@ time_duration rpc_manager::tick()
|
||||||
{
|
{
|
||||||
INVARIANT_CHECK;
|
INVARIANT_CHECK;
|
||||||
|
|
||||||
const static int short_timeout = 3;
|
const static int short_timeout = 2;
|
||||||
const static int timeout = 20;
|
const static int timeout = 10;
|
||||||
|
|
||||||
// look for observers that have timed out
|
// look for observers that have timed out
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue