From e84275e42927a333ea274c2c07612b68e4d8682a Mon Sep 17 00:00:00 2001 From: Mukund Sivaraman Date: Wed, 20 Aug 2008 14:36:15 +0000 Subject: [PATCH] Replace the random number generator inside peer-mgr with a stupid faster one. --- libtransmission/peer-mgr.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/libtransmission/peer-mgr.c b/libtransmission/peer-mgr.c index 9355db7f8..0ecd3fe62 100644 --- a/libtransmission/peer-mgr.c +++ b/libtransmission/peer-mgr.c @@ -130,6 +130,27 @@ struct tr_peerMgr *** **/ +/* The following is not a very high quality random number generator. It + * is mainly used as a simple stupid random number generator inside some + * functions below. Please don't use it for anything else unless you + * know what you're doing. Use tr_cryptoRandInt() instead. + */ + +static int +tr_simpleRandInt( int sup ) +{ + static int init = 0; + assert( sup > 0 ); + + if ( !init ) + { + srand( tr_date() ); + init = 1; + } + + return rand() % sup; +} + static void managerLock( const struct tr_peerMgr * manager ) { @@ -600,7 +621,7 @@ getPreferredPieces( Torrent * t, setme->piece = piece; setme->priority = inf->pieces[piece].priority; setme->peerCount = 0; - setme->random = tr_cryptoRandInt( UINT16_MAX ); + setme->random = tr_simpleRandInt( UINT16_MAX ); setme->missingBlockCount = tr_cpMissingBlocksInPiece( tor->completion, piece ); for( k=0; kdoUnchoke = 1; t->optimistic = c->peer; } -- 2.40.0