*** empty log message ***
This commit is contained in:
parent
465b3c214a
commit
9a5c7faf69
|
@ -210,18 +210,29 @@ namespace
|
||||||
{
|
{
|
||||||
if (free_upload == 0) return free_upload;
|
if (free_upload == 0) return free_upload;
|
||||||
int num_peers = 0;
|
int num_peers = 0;
|
||||||
|
int total_diff = 0;
|
||||||
for (torrent::peer_iterator i = start; i != end; ++i)
|
for (torrent::peer_iterator i = start; i != end; ++i)
|
||||||
{
|
{
|
||||||
if ((*i)->is_interesting() || !(*i)->is_peer_interested()) continue;
|
total_diff += (*i)->share_diff();
|
||||||
|
if (!(*i)->is_peer_interested() || (*i)->share_diff() >= 0) continue;
|
||||||
++num_peers;
|
++num_peers;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num_peers == 0) return free_upload;
|
if (num_peers == 0) return free_upload;
|
||||||
int upload_share = free_upload / num_peers;
|
int upload_share;
|
||||||
|
if (total_diff >= 0)
|
||||||
|
{
|
||||||
|
upload_share = std::min(free_upload, total_diff) / num_peers;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
upload_share = (free_upload + total_diff) / num_peers;
|
||||||
|
}
|
||||||
|
if (upload_share < 0) return free_upload;
|
||||||
|
|
||||||
for (torrent::peer_iterator i = start; i != end; ++i)
|
for (torrent::peer_iterator i = start; i != end; ++i)
|
||||||
{
|
{
|
||||||
if ((*i)->is_interesting() || !(*i)->is_peer_interested()) continue;
|
if (!(*i)->is_peer_interested() || (*i)->share_diff() >= 0) continue;
|
||||||
(*i)->add_free_upload(upload_share);
|
(*i)->add_free_upload(upload_share);
|
||||||
free_upload -= upload_share;
|
free_upload -= upload_share;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue