(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:
parent
ddaaa92c31
commit
a4ab013568
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue