Changeset 6008


Ignore:
Timestamp:
Jun 3, 2008, 4:29:56 AM (14 years ago)
Author:
charles
Message:

#988: Optimistic unchoke can unchoke uninterested peers

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/peer-mgr.c

    r5985 r6008  
    15841584    if( i < size )
    15851585    {
     1586        int n;
    15861587        struct ChokeData * c;
    15871588        tr_ptrArray * randPool = tr_ptrArrayNew( );
     1589
    15881590        for( ; i<size; ++i )
    15891591        {
    1590             const tr_peer * peer = choke[i].peer;
    1591             int x=1, y;
    1592             if( isNew( peer ) ) x *= 3;
    1593             if( isSame( peer ) ) x *= 3;
    1594             for( y=0; y<x; ++y )
    1595                 tr_ptrArrayAppend( randPool, choke );
    1596         }
    1597         i = tr_rand( tr_ptrArraySize( randPool ) );
    1598         c = tr_ptrArrayNth( randPool, i);
    1599         c->doUnchoke = 1;
    1600         t->optimistic = c->peer;
     1592            if( choke[i].isInterested )
     1593            {
     1594                const tr_peer * peer = choke[i].peer;
     1595                int x=1, y;
     1596                if( isNew( peer ) ) x *= 3;
     1597                if( isSame( peer ) ) x *= 3;
     1598                for( y=0; y<x; ++y )
     1599                    tr_ptrArrayAppend( randPool, choke );
     1600            }
     1601        }
     1602
     1603        if(( n = tr_ptrArraySize( randPool )))
     1604        {
     1605            c = tr_ptrArrayNth( randPool, tr_rand( n ));
     1606            c->doUnchoke = 1;
     1607            t->optimistic = c->peer;
     1608        }
     1609
    16011610        tr_ptrArrayFree( randPool, NULL );
    16021611    }
Note: See TracChangeset for help on using the changeset viewer.