Fix bug of torrents don't save "stopped" state

This commit is contained in:
Vladimir Golovnev (Glassez) 2020-12-11 12:02:25 +03:00
parent aaeffe3846
commit 5f94238d23
No known key found for this signature in database
GPG key ID: 52A2C7DEE2DFA6F7
2 changed files with 18 additions and 14 deletions

View file

@ -4253,21 +4253,21 @@ bool Session::loadTorrentResumeData(const QByteArray &data, const TorrentInfo &m
if (metadata.isValid())
p.ti = metadata.nativeInfo();
torrentParams.paused = (p.flags & lt::torrent_flags::paused) && !(p.flags & lt::torrent_flags::auto_managed);
if (!torrentParams.paused)
if (p.flags & lt::torrent_flags::stop_when_ready)
{
// If torrent has "stop_when_ready" flag set then it is actually "stopped"
// but temporarily "resumed" to perform some service jobs (e.g. checking)
torrentParams.paused = !!(p.flags & lt::torrent_flags::stop_when_ready);
torrentParams.paused = true;
torrentParams.forced = false;
// ...but temporarily "resumed" to perform some service jobs (e.g. checking)
p.flags &= ~lt::torrent_flags::paused;
p.flags |= lt::torrent_flags::auto_managed;
}
else
{
// Fix inconsistent state when "paused" torrent has "stop_when_ready" flag set
p.flags &= ~lt::torrent_flags::stop_when_ready;
torrentParams.paused = (p.flags & lt::torrent_flags::paused) && !(p.flags & lt::torrent_flags::auto_managed);
torrentParams.forced = !(p.flags & lt::torrent_flags::paused) && !(p.flags & lt::torrent_flags::auto_managed);
}
torrentParams.forced = !(p.flags & lt::torrent_flags::paused) && !(p.flags & lt::torrent_flags::auto_managed);
const bool hasMetadata = (p.ti && p.ti->is_valid());
if (!hasMetadata && !root.dict_find("info-hash"))
{