mirror of
https://github.com/transmission/transmission
synced 2024-12-26 01:27:28 +00:00
(trunk libT) #3658 "don't initiate new peer connections if our bandwidth is maxed out" -- added to trunk for nightly build users to kick around a bit. this is an experimental patch and I'm not sure how I feel about it.
This commit is contained in:
parent
535ae6b275
commit
492c4bbe0b
1 changed files with 8 additions and 2 deletions
|
@ -3479,7 +3479,7 @@ getPeerCandidates( tr_session * session, int * candidateCount )
|
||||||
/* leave 5% of connection slots for incoming connections -- ticket #2609 */
|
/* leave 5% of connection slots for incoming connections -- ticket #2609 */
|
||||||
const int maxCandidates = tr_sessionGetPeerLimit( session ) * 0.95;
|
const int maxCandidates = tr_sessionGetPeerLimit( session ) * 0.95;
|
||||||
|
|
||||||
/* don't start any new handshakes if we're full up */
|
/* don't start any new handshakes if we have enough peers */
|
||||||
n = 0;
|
n = 0;
|
||||||
tor= NULL;
|
tor= NULL;
|
||||||
while(( tor = tr_torrentNext( session, tor )))
|
while(( tor = tr_torrentNext( session, tor )))
|
||||||
|
@ -3501,6 +3501,8 @@ getPeerCandidates( tr_session * session, int * candidateCount )
|
||||||
while(( tor = tr_torrentNext( session, tor )))
|
while(( tor = tr_torrentNext( session, tor )))
|
||||||
{
|
{
|
||||||
int i, nAtoms;
|
int i, nAtoms;
|
||||||
|
tr_bool full_up;
|
||||||
|
tr_bool full_dn;
|
||||||
struct peer_atom ** atoms;
|
struct peer_atom ** atoms;
|
||||||
|
|
||||||
if( !tor->torrentPeers->isRunning )
|
if( !tor->torrentPeers->isRunning )
|
||||||
|
@ -3511,7 +3513,11 @@ getPeerCandidates( tr_session * session, int * candidateCount )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* if we've already got enough speed in this torrent... */
|
/* if we've already got enough speed in this torrent... */
|
||||||
if( tr_torrentIsSeed( tor ) && isBandwidthMaxedOut( tor->bandwidth, now_msec, TR_UP ) )
|
full_up = isBandwidthMaxedOut( tor->bandwidth, now_msec, TR_UP );
|
||||||
|
full_dn = isBandwidthMaxedOut( tor->bandwidth, now_msec, TR_DOWN );
|
||||||
|
if( full_up && full_dn )
|
||||||
|
continue;
|
||||||
|
if( full_up && tr_torrentIsSeed( tor ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
atoms = (struct peer_atom**) tr_ptrArrayPeek( &tor->torrentPeers->pool, &nAtoms );
|
atoms = (struct peer_atom**) tr_ptrArrayPeek( &tor->torrentPeers->pool, &nAtoms );
|
||||||
|
|
Loading…
Reference in a new issue