(trunk libT) fix magnet link crash in peer-msgs.c's updateDesiredRequestCount() reported by quinx in the forums.

In some odd cases (such as if unchoked without having shown interest), the code could dividing a number by the torrent's block size without checking to see if the torrent had its metadata yet. This caused a division by zero because a magnet torrent's blocksize is unset until the metadata is downloaded.
This commit is contained in:
Jordan Lee 2011-05-12 06:43:40 +00:00
parent ddaaa92c31
commit a4ab013568
1 changed files with 5 additions and 9 deletions

View File

@ -1663,15 +1663,11 @@ updateDesiredRequestCount( tr_peermsgs * msgs )
{
const tr_torrent * const torrent = msgs->torrent;
if( tr_torrentIsSeed( msgs->torrent ) )
{
msgs->desiredRequestCount = 0;
}
else if( msgs->peer->clientIsChoked )
{
msgs->desiredRequestCount = 0;
}
else if( !msgs->peer->clientIsInterested )
/* there are lots of reasons we might not want to request any blocks... */
if( tr_torrentIsSeed( torrent ) || !tr_torrentHasMetadata( torrent )
|| msgs->peer->clientIsChoked
|| !msgs->peer->clientIsInterested )
{
msgs->desiredRequestCount = 0;
}