mirror of
https://github.com/transmission/transmission.git
synced 2026-05-08 09:39:08 +01:00
(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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user