From c660c9df8e287cb387c26394dfcf43b781419fc1 Mon Sep 17 00:00:00 2001 From: summer <79678786+summerqB@users.noreply.github.com> Date: Wed, 29 Jun 2022 10:17:52 +0600 Subject: [PATCH] Try to recover missing tags Tags can go missing from config/resume data. Try to recover them to avoid inconsistent behavior. --- src/base/bittorrent/session.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 46e7f9d0f..fda39bfcd 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -1306,6 +1306,24 @@ void Session::processNextResumeData(ResumeSessionContext *context) } } + Algorithm::removeIf(resumeData.tags, [this, &torrentID](const QString &tag) + { + if (hasTag(tag)) + return false; + + if (addTag(tag)) + { + LogMsg(tr("Detected inconsistent data: tag is missing from the configuration file." + " Tag will be recovered." + " Torrent: \"%1\". Tag: \"%2\"").arg(torrentID.toString(), tag), Log::WARNING); + return false; + } + + LogMsg(tr("Detected inconsistent data: invalid tag. Torrent: \"%1\". Tag: \"%2\"") + .arg(torrentID.toString(), tag), Log::WARNING); + return true; + }); + resumeData.ltAddTorrentParams.userdata = LTClientData(new ExtensionData); #ifndef QBT_USES_LIBTORRENT2 resumeData.ltAddTorrentParams.storage = customStorageConstructor; @@ -4824,7 +4842,6 @@ const CacheStatus &Session::cacheStatus() const return m_cacheStatus; } - qint64 Session::getAlltimeDL() const { return m_statistics->getAlltimeDL();