1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2024-12-22 07:42:37 +00:00

fix: always sort peer candidates by score (#7199)

This commit is contained in:
Yat Ho 2024-10-28 08:54:09 +08:00 committed by GitHub
parent 13987e7996
commit d5d950e1cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2608,15 +2608,13 @@ void get_peer_candidates(size_t global_peer_limit, tr_torrents& torrents, tr_pee
} }
// only keep the best `max` candidates // only keep the best `max` candidates
if (static auto constexpr Max = tr_peerMgr::OutboundCandidates::requested_inline_size; Max < std::size(candidates)) auto const n_keep = std::min(tr_peerMgr::OutboundCandidates::requested_inline_size, std::size(candidates));
{ std::partial_sort(
std::partial_sort( std::begin(candidates),
std::begin(candidates), std::begin(candidates) + n_keep,
std::begin(candidates) + Max, std::end(candidates),
std::end(candidates), [](auto const& a, auto const& b) { return a.score < b.score; });
[](auto const& a, auto const& b) { return a.score < b.score; }); candidates.resize(n_keep);
candidates.resize(Max);
}
// put the best candidates at the end of the list // put the best candidates at the end of the list
for (auto it = std::crbegin(candidates), end = std::crend(candidates); it != end; ++it) for (auto it = std::crbegin(candidates), end = std::crend(candidates); it != end; ++it)