Changeset 7064
- Timestamp:
- Nov 7, 2008, 4:10:27 AM (12 years ago)
- Location:
- trunk/libtransmission
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/peer-mgr.c
r7060 r7064 1892 1892 tr_peer ** peers = getConnectedPeers( t, &peerCount ); 1893 1893 struct ChokeData * choke = tr_new0( struct ChokeData, peerCount ); 1894 const int chokeAll = !tr_torrentPieceTransferIsAllowed( t->tor, TR_CLIENT_TO_PEER ); 1894 1895 1895 1896 assert( torrentIsLocked( t ) ); … … 1901 1902 if( peer->progress >= 1.0 ) /* choke all seeds */ 1902 1903 tr_peerMsgsSetChoke( peer->msgs, TRUE ); 1903 else 1904 { 1904 else if( chokeAll ) 1905 tr_peerMsgsSetChoke( peer->msgs, TRUE ); 1906 else { 1905 1907 struct ChokeData * n = &choke[size++]; 1906 1908 n->peer = peer; … … 2504 2506 for( i = 0; i < torrentCount; ++i ) 2505 2507 { 2506 Torrent * 2508 Torrent * t = torrents[i]; 2507 2509 const size_t used = countPeerBandwidth( t->peers, direction ); 2510 tr_speedlimit speedMode; 2511 2508 2512 countHandshakeBandwidth( t->outgoingHandshakes, direction ); 2509 2513 … … 2514 2518 allBytesUsed += used; 2515 2519 2520 /* if piece data is disallowed, don't bother limiting bandwidth -- 2521 * we won't be asking for, or sending out, any pieces */ 2522 if( !tr_torrentPieceTransferIsAllowed( t->tor, direction ) ) 2523 speedMode = TR_SPEEDLIMIT_UNLIMITED; 2524 else 2525 speedMode = tr_torrentGetSpeedMode( t->tor, direction ); 2526 2516 2527 /* process the torrent's peers based on its speed mode */ 2517 switch( tr_torrentGetSpeedMode( t->tor, direction ))2528 switch( speedMode ) 2518 2529 { 2519 2530 case TR_SPEEDLIMIT_UNLIMITED: -
trunk/libtransmission/peer-msgs.c
r7055 r7064 543 543 return FALSE; 544 544 545 if( !tr_torrentPieceTransferIsAllowed( msgs->torrent, TR_PEER_TO_CLIENT ) ) 546 return FALSE; 547 545 548 torrent = msgs->torrent; 546 549 bitfield = tr_cpPieceBitfield( torrent->completion ); … … 810 813 return; 811 814 if( msgs->info->clientIsChoked ) 815 return; 816 if( !tr_torrentPieceTransferIsAllowed( msgs->torrent, TR_PEER_TO_CLIENT ) ) 812 817 return; 813 818 -
trunk/libtransmission/torrent.c
r7056 r7064 147 147 { 148 148 tr_speedlimit * limit = direction == TR_UP ? &tor->uploadLimitMode 149 : &tor->downloadLimitMode;149 : &tor->downloadLimitMode; 150 150 151 151 *limit = mode; … … 157 157 { 158 158 return direction == TR_UP ? tor->uploadLimitMode 159 : tor->downloadLimitMode;159 : tor->downloadLimitMode; 160 160 } 161 161 … … 193 193 assert( 0 ); 194 194 } 195 } 196 197 int 198 tr_torrentPieceTransferIsAllowed( const tr_torrent * tor, 199 tr_direction direction ) 200 { 201 int isEnabled = FALSE; 202 203 switch( tr_torrentGetSpeedMode( tor, direction ) ) 204 { 205 case TR_SPEEDLIMIT_GLOBAL: 206 isEnabled = tr_sessionGetSpeedLimit( tor->session, direction ) > 0; 207 break; 208 209 case TR_SPEEDLIMIT_SINGLE: 210 isEnabled = tr_torrentGetSpeedLimit( tor, direction ) > 0; 211 break; 212 213 case TR_SPEEDLIMIT_UNLIMITED: 214 isEnabled = TRUE; 215 break; 216 217 default: 218 assert( 0 && "unhandled speed mode" ); 219 break; 220 } 221 222 return isEnabled; 195 223 } 196 224 -
trunk/libtransmission/torrent.h
r7055 r7064 82 82 int tr_torrentAllowsPex( const tr_torrent * ); 83 83 84 int tr_torrentPieceTransferIsAllowed( const tr_torrent * torrent, 85 tr_direction direction ); 86 84 87 /* get the index of this piece's first block */ 85 88 #define tr_torPieceFirstBlock( tor, piece ) ( ( piece ) *\
Note: See TracChangeset
for help on using the changeset viewer.