Changeset 3958
- Timestamp:
- Nov 25, 2007, 4:57:08 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/peer-mgr.c
r3878 r3958 12 12 13 13 #include <assert.h> 14 #include <string.h> /* memcpy, memcmp */14 #include <string.h> /* memcpy, memcmp, strstr */ 15 15 #include <stdlib.h> /* qsort */ 16 16 #include <stdio.h> /* printf */ … … 1483 1483 tr_peer * peer; 1484 1484 int rate; 1485 int preferred; 1486 int doUnchoke; 1485 uint8_t preferred; 1486 uint8_t preferred_t; 1487 uint8_t doUnchoke; 1487 1488 }; 1488 1489 … … 1492 1493 const struct ChokeData * a = va; 1493 1494 const struct ChokeData * b = vb; 1494 1495 /* primary key: larger speeds */ 1496 if( a->rate > b->rate ) 1497 return -1; 1498 if ( a->rate < b->rate ) 1499 return 1; 1500 1501 /* secondary key: perferred peers */ 1502 if( a->preferred != b->preferred ) 1503 return a->preferred ? -1 : 1; 1504 1495 if( a->rate > b->rate ) return -1; 1496 if( a->rate < b->rate ) return 1; 1497 if( a->preferred_t != b->preferred_t ) return a->preferred_t ? -1 : 1; 1498 if( a->preferred != b->preferred ) return a->preferred ? -1 : 1; 1505 1499 return 0; 1506 1500 } 1507 1501 1508 1502 static int 1509 clientIsSnubbedBy( const tr_peer * peer )1503 clientIsSnubbedBy( const tr_peer * peer, int clientIsSeed ) 1510 1504 { 1511 1505 assert( peer != NULL ); 1512 1506 1513 return peer->peerSentPieceDataAt < (time(NULL) - SNUBBED_SEC); 1507 return !clientIsSeed 1508 && ( peer->peerSentPieceDataAt < (time(NULL) - SNUBBED_SEC ) ); 1514 1509 } 1515 1510 … … 1549 1544 node = &choke[size++]; 1550 1545 node->peer = peer; 1551 node->preferred = peer->peerIsInterested && !clientIsSnubbedBy(peer); 1546 node->preferred = peer->peerIsInterested && !clientIsSnubbedBy( peer, clientIsSeed ); 1547 node->preferred_t = node->preferred && peer->client && strstr( peer->client, "Transmission" ); 1552 1548 node->rate = getWeightedThroughput( peer, clientIsSeed ); 1553 1549 }
Note: See TracChangeset
for help on using the changeset viewer.