fix a pair of webseed bugs reported by BentMyWookie

This commit is contained in:
Charles Kerr 2008-06-11 19:01:16 +00:00
parent ecc8214601
commit 85c26e9f7d
1 changed files with 14 additions and 5 deletions

View File

@ -767,6 +767,15 @@ gotBadPiece( Torrent * t, tr_piece_index_t pieceIndex )
tor->downloadedCur -= MIN( tor->downloadedCur, byteCount );
}
static void
refillSoon( Torrent * t )
{
if( t->refillTimer == NULL )
t->refillTimer = tr_timerNew( t->manager->handle,
refillPulse, t,
REFILL_PERIOD_MSEC );
}
static void
peerCallbackFunc( void * vpeer, void * vevent, void * vt )
{
@ -779,10 +788,7 @@ peerCallbackFunc( void * vpeer, void * vevent, void * vt )
switch( e->eventType )
{
case TR_PEER_NEED_REQ:
if( t->refillTimer == NULL )
t->refillTimer = tr_timerNew( t->manager->handle,
refillPulse, t,
REFILL_PERIOD_MSEC );
refillSoon( t );
break;
case TR_PEER_CANCEL:
@ -1208,6 +1214,9 @@ tr_peerMgrStartTorrent( tr_peerMgr * manager,
reconnectPulse( t );
rechokePulse( t );
if( !tr_ptrArrayEmpty( t->webseeds ) )
refillSoon( t );
}
managerUnlock( manager );
@ -1407,7 +1416,7 @@ tr_peerMgrTorrentStats( const tr_peerMgr * manager,
++*setmeSeedsConnected;
}
webseeds = (const tr_webseed **) tr_ptrArrayPeek( t->peers, &size );
webseeds = (const tr_webseed **) tr_ptrArrayPeek( t->webseeds, &size );
for( i=0; i<size; ++i )
{
if( tr_webseedIsActive( webseeds[i] ) )