Changeset 7545
- Timestamp:
- Dec 30, 2008, 8:20:16 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/peer-mgr.c
r7524 r7545 496 496 } 497 497 498 static tr_peer**499 getConnectedPeers( Torrent * t, int * setmeCount )500 {501 int i, peerCount, connectionCount;502 tr_peer **peers;503 tr_peer **ret;504 505 assert( torrentIsLocked( t ) );506 507 peers = (tr_peer **) tr_ptrArrayPeek( &t->peers, &peerCount );508 ret = tr_new( tr_peer *, peerCount );509 510 for( i = connectionCount = 0; i < peerCount; ++i )511 if( peers[i]->msgs )512 ret[connectionCount++] = peers[i];513 514 *setmeCount = connectionCount;515 return ret;516 }517 518 498 static int 519 499 clientIsDownloadingFrom( const tr_peer * peer ) … … 639 619 tr_piece_index_t * pool = tr_new( tr_piece_index_t , inf->pieceCount ); 640 620 int peerCount; 641 tr_peer**peers;621 const tr_peer ** peers; 642 622 643 623 assert( torrentIsLocked( t ) ); 644 624 645 peers = getConnectedPeers( t, &peerCount ); 625 peers = (const tr_peer**) TR_PTR_ARRAY_DATA( &t->peers ); 626 peerCount = TR_PTR_ARRAY_LENGTH( &t->peers ); 646 627 647 628 /* make a list of the pieces that we want but don't have */ … … 689 670 tr_free( p ); 690 671 } 691 692 tr_free( peers );693 672 694 673 *pieceCount = poolSize; … … 888 867 broadcastGotBlock( Torrent * t, uint32_t index, uint32_t offset, uint32_t length ) 889 868 { 890 int i, size; 869 size_t i; 870 size_t peerCount; 891 871 tr_peer ** peers; 892 872 … … 894 874 895 875 tordbg( t, "got a block; cancelling any duplicate requests from peers %"PRIu32":%"PRIu32"->%"PRIu32, index, offset, length ); 896 peers = getConnectedPeers( t, &size ); 897 for( i=0; i<size; ++i ) 898 tr_peerMsgsCancel( peers[i]->msgs, index, offset, length ); 899 tr_free( peers ); 876 877 peerCount = TR_PTR_ARRAY_LENGTH( &t->peers ); 878 peers = (tr_peer**) TR_PTR_ARRAY_DATA( &t->peers ); 879 for( i=0; i<peerCount; ++i ) 880 if( peers[i]->msgs ) 881 tr_peerMsgsCancel( peers[i]->msgs, index, offset, length ); 900 882 } 901 883 … … 1122 1104 else 1123 1105 { 1124 int i, peerCount; 1125 tr_peer ** peers = getConnectedPeers( t, &peerCount ); 1126 for( i = 0; i < peerCount; ++i ) 1106 int i; 1107 int peerCount = TR_PTR_ARRAY_LENGTH( &t->peers ); 1108 tr_peer ** peers = (tr_peer**) TR_PTR_ARRAY_DATA( &t->peers ); 1109 for( i=0; i<peerCount; ++i ) 1127 1110 tr_peerMsgsHave( peers[i]->msgs, p ); 1128 tr_free( peers );1129 1111 } 1130 1112 … … 1675 1657 int peerCount; 1676 1658 const tr_peer ** peers; 1677 1678 1659 managerLock( manager ); 1679 1660 … … 1709 1690 const uint8_t * torrentHash ) 1710 1691 { 1711 int i, size; 1712 Torrent * t; 1713 tr_peer ** peers; 1692 int i; 1693 int peerCount; 1694 Torrent * t; 1695 const tr_peer ** peers; 1714 1696 tr_bitfield * pieces; 1715 1697 managerLock( manager ); … … 1717 1699 t = getExistingTorrent( (tr_peerMgr*)manager, torrentHash ); 1718 1700 pieces = tr_bitfieldNew( t->tor->info.pieceCount ); 1719 peers = getConnectedPeers( t, &size ); 1720 for( i = 0; i < size; ++i ) 1701 peerCount = TR_PTR_ARRAY_LENGTH( &t->peers ); 1702 peers = (const tr_peer**) TR_PTR_ARRAY_DATA( &t->peers ); 1703 for( i=0; i<peerCount; ++i ) 1721 1704 tr_bitfieldOr( pieces, peers[i]->have ); 1722 1705 1723 1706 managerUnlock( manager ); 1724 tr_free( peers );1725 1707 return pieces; 1726 1708 } … … 1846 1828 int * setmeCount UNUSED ) 1847 1829 { 1848 int 1830 int i, size; 1849 1831 const Torrent * t; 1850 tr_peer **peers;1851 tr_peer_stat * 1832 const tr_peer ** peers; 1833 tr_peer_stat * ret; 1852 1834 1853 1835 assert( manager ); … … 1855 1837 1856 1838 t = getExistingTorrent( (tr_peerMgr*)manager, torrentHash ); 1857 peers = getConnectedPeers( (Torrent*)t, &size ); 1839 size = TR_PTR_ARRAY_LENGTH( &t->peers ); 1840 peers = (const tr_peer**) TR_PTR_ARRAY_DATA( &t->peers ); 1858 1841 ret = tr_new0( tr_peer_stat, size ); 1859 1842 … … 1901 1884 1902 1885 *setmeCount = size; 1903 tr_free( peers );1904 1886 1905 1887 managerUnlock( manager ); … … 1955 1937 rechoke( Torrent * t ) 1956 1938 { 1957 int i, peerCount, size, unchokedInterested; 1958 tr_peer ** peers = getConnectedPeers( t, &peerCount ); 1939 int i, size, unchokedInterested; 1940 const int peerCount = TR_PTR_ARRAY_LENGTH( &t->peers ); 1941 tr_peer ** peers = (tr_peer**) TR_PTR_ARRAY_DATA( &t->peers ); 1959 1942 struct ChokeData * choke = tr_new0( struct ChokeData, peerCount ); 1960 const int 1943 const int chokeAll = !tr_torrentIsPieceTransferAllowed( t->tor, TR_CLIENT_TO_PEER ); 1961 1944 1962 1945 assert( torrentIsLocked( t ) ); … … 2047 2030 /* cleanup */ 2048 2031 tr_free( choke ); 2049 tr_free( peers );2050 2032 } 2051 2033
Note: See TracChangeset
for help on using the changeset viewer.