From 4aab44e779833039be7d17ae541203918dbb18fd Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Wed, 21 Aug 2019 15:37:39 +0800 Subject: [PATCH] Always save info dict when saving fastresume Otherwise torrents loaded from fastresume won't have it and needs to redownload it from elsewhere and slowing down the startup process. This is also required for the future where we will drop loading the `info` dict from .torrent files. --- src/base/bittorrent/session.cpp | 5 +++++ src/base/bittorrent/torrenthandle.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index df0d1036a..904e6a206 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -3661,6 +3661,11 @@ void Session::startUpTorrents() int resumedTorrentsCount = 0; const auto startupTorrent = [this, &resumeDataDir, &resumedTorrentsCount](const TorrentResumeData ¶ms) { + // TODO: Remove loading of .torrent files when starting up existing torrents + // Starting from v4.2.0, the required `info` dict will be stored in fastresume too + // (besides .torrent file), that means we can remove loading of .torrent files in + // a later release, such as v4.3.0. + const QString filePath = resumeDataDir.filePath(QString("%1.torrent").arg(params.hash)); qDebug() << "Starting up torrent" << params.hash << "..."; if (!addTorrent_impl(params.addTorrentData, params.magnetUri, TorrentInfo::loadFromFile(filePath), params.data)) diff --git a/src/base/bittorrent/torrenthandle.cpp b/src/base/bittorrent/torrenthandle.cpp index 455ae6435..d02abd3fe 100644 --- a/src/base/bittorrent/torrenthandle.cpp +++ b/src/base/bittorrent/torrenthandle.cpp @@ -552,7 +552,7 @@ bool TorrentHandle::needSaveResumeData() const void TorrentHandle::saveResumeData() { - m_nativeHandle.save_resume_data(); + m_nativeHandle.save_resume_data(lt::torrent_handle::save_info_dict); m_session->handleTorrentSaveResumeDataRequested(this); }