diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index 0981ea262..496308fef 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -2817,6 +2817,19 @@ bool SessionImpl::addTorrent_impl(const TorrentDescriptor &source, const AddTorr loadTorrentParams.name = contentName; } + const auto nativeIndexes = torrentInfo.nativeIndexes(); + + Q_ASSERT(p.file_priorities.empty()); + Q_ASSERT(addTorrentParams.filePriorities.isEmpty() || (addTorrentParams.filePriorities.size() == nativeIndexes.size())); + QList filePriorities = addTorrentParams.filePriorities; + + // Filename filter should be applied before `findIncompleteFiles()` is called. + if (filePriorities.isEmpty() && isExcludedFileNamesEnabled()) + { + // Check file name blacklist when priorities are not explicitly set + applyFilenameFilter(filePaths, filePriorities); + } + if (!loadTorrentParams.hasFinishedStatus) { const Path actualDownloadPath = useAutoTMM @@ -2825,24 +2838,12 @@ bool SessionImpl::addTorrent_impl(const TorrentDescriptor &source, const AddTorr isFindingIncompleteFiles = true; } - const auto nativeIndexes = torrentInfo.nativeIndexes(); if (!isFindingIncompleteFiles) { for (int index = 0; index < filePaths.size(); ++index) p.renamed_files[nativeIndexes[index]] = filePaths.at(index).toString().toStdString(); } - Q_ASSERT(p.file_priorities.empty()); - Q_ASSERT(addTorrentParams.filePriorities.isEmpty() || (addTorrentParams.filePriorities.size() == nativeIndexes.size())); - - QList filePriorities = addTorrentParams.filePriorities; - - if (filePriorities.isEmpty() && isExcludedFileNamesEnabled()) - { - // Check file name blacklist when priorities are not explicitly set - applyFilenameFilter(filePaths, filePriorities); - } - const int internalFilesCount = torrentInfo.nativeInfo()->files().num_files(); // including .pad files // Use qBittorrent default priority rather than libtorrent's (4) p.file_priorities = std::vector(internalFilesCount, LT::toNative(DownloadPriority::Normal)); diff --git a/src/base/bittorrent/torrentimpl.cpp b/src/base/bittorrent/torrentimpl.cpp index 6d7ce0e36..02a8d696e 100644 --- a/src/base/bittorrent/torrentimpl.cpp +++ b/src/base/bittorrent/torrentimpl.cpp @@ -1829,7 +1829,7 @@ void TorrentImpl::endReceivedMetadataHandling(const Path &savePath, const PathLi m_filePriorities.append(LT::fromNative(p.file_priorities[LT::toUnderlyingType(nativeIndex)])); } - m_session->applyFilenameFilter(fileNames, m_filePriorities); + m_session->applyFilenameFilter(m_filePaths, m_filePriorities); for (int i = 0; i < m_filePriorities.size(); ++i) p.file_priorities[LT::toUnderlyingType(nativeIndexes[i])] = LT::toNative(m_filePriorities[i]);