From 6cd233dd61b75e32917b4e8395abf0cad0f3f953 Mon Sep 17 00:00:00 2001 From: Eugene Shalygin Date: Wed, 18 Jan 2017 17:17:51 +0100 Subject: [PATCH] Add queue repair code This is a bit adjusted code created by nxd4, who shared it in issue disappearing). --- src/base/bittorrent/session.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 6ef664e6f..3c3716a78 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -3077,6 +3077,7 @@ void Session::startUpTorrents() // Resume downloads QMap queuedResumeData; int nextQueuePosition = 1; + int numOfRemappedFiles = 0; QRegExp rx(QLatin1String("^([A-Fa-f0-9]{40})\\.fastresume$")); foreach (const QString &fastresumeName, fastresumes) { if (rx.indexIn(fastresumeName) == -1) continue; @@ -3100,11 +3101,23 @@ void Session::startUpTorrents() } } else { - queuedResumeData[queuePosition] = { hash, magnetUri, resumeData, data }; + int q = queuePosition; + for(; queuedResumeData.contains(q); ++q) { + } + if (q != queuePosition) { + ++numOfRemappedFiles; + } + queuedResumeData[q] = { hash, magnetUri, resumeData, data }; } } } + if (numOfRemappedFiles > 0) { + logger->addMessage( + QString(tr("Queue positions were corrected in %1 resume files")).arg(numOfRemappedFiles), + Log::CRITICAL); + } + // starting up downloading torrents (queue position > 0) foreach (const TorrentResumeData &torrentResumeData, queuedResumeData) startupTorrent(torrentResumeData);