From d42fae7dce017968163257281d4491a2ca1462bf Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sat, 15 Nov 2008 01:07:08 +0000 Subject: [PATCH] (libT) fix r7109 oops spotted by BentMyWookie --- libtransmission/peer-mgr.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/libtransmission/peer-mgr.c b/libtransmission/peer-mgr.c index 4ed5deb0a..eacec9bb4 100644 --- a/libtransmission/peer-mgr.c +++ b/libtransmission/peer-mgr.c @@ -1842,7 +1842,8 @@ struct ChokeData { unsigned int doUnchoke : 1; unsigned int isInterested : 1; - double rate; + unsigned int isChoked : 1; + int rate; tr_peer * peer; }; @@ -1852,15 +1853,14 @@ compareChoke( const void * va, { const struct ChokeData * a = va; const struct ChokeData * b = vb; - int diff = 0; - if( diff == 0 ) /* prefer higher overall speeds */ - diff = a->rate > b->rate ? -1 : 1; + if( a->rate != b->rate ) /* prefer higher overall speeds */ + return a->rate > b->rate ? -1 : 1; - if( diff == 0 ) /* prefer unchoked */ - diff = (int)a->peer->peerIsChoked - (int)b->peer->peerIsChoked; + if( a->isChoked != b->isChoked ) /* prefer unchoked */ + return a->isChoked ? 1 : -1; - return diff; + return 0; } static int @@ -1901,8 +1901,9 @@ rechoke( Torrent * t ) struct ChokeData * n = &choke[size++]; n->peer = peer; n->isInterested = peer->peerIsInterested; - n->rate = tr_peerGetPieceSpeed( peer, TR_CLIENT_TO_PEER ) - + tr_peerGetPieceSpeed( peer, TR_PEER_TO_CLIENT ); + n->isChoked = peer->peerIsChoked; + n->rate = (int)(tr_peerGetPieceSpeed( peer, TR_CLIENT_TO_PEER ) + + tr_peerGetPieceSpeed( peer, TR_PEER_TO_CLIENT ) ); } }