From d657c872433aea21a2762880599e9dbee40db9a0 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Wed, 21 Aug 2019 15:41:04 +0800 Subject: [PATCH] Fix unable to remove web seeds As suggested in post [1] we don't need to assign the `ti` field anymore when fastresme already contains the `info` dict. [1]: https://github.com/arvidn/libtorrent/issues/3946#issuecomment-523300003 --- src/base/bittorrent/session.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 12c96fa77..df0d1036a 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -1929,6 +1929,10 @@ bool Session::addTorrent_impl(CreateTorrentParams params, const MagnetUri &magne , (patchedFastresumeData.constData() + patchedFastresumeData.size())}; p.flags |= lt::add_torrent_params::flag_use_resume_save_path; + // load from .torrent file when fastresume doesn't contain the required `info` dict + if (!patchedFastresumeData.contains("4:infod")) + p.ti = torrentInfo.nativeInfo(); + // Still setup the default parameters and let libtorrent handle // the parameter merging hasCompleteFastresume = false; @@ -1936,6 +1940,10 @@ bool Session::addTorrent_impl(CreateTorrentParams params, const MagnetUri &magne lt::error_code ec; p = lt::read_resume_data(fastresumeData, ec); + // load from .torrent file when fastresume doesn't contain the required `info` dict + if (!p.ti->is_valid()) + p.ti = torrentInfo.nativeInfo(); + // libtorrent will always apply `file_priorities` to torrents, // if the field is present then the fastresume is considered to // be correctly generated and should be complete. @@ -1972,9 +1980,9 @@ bool Session::addTorrent_impl(CreateTorrentParams params, const MagnetUri &magne static_cast(priority)); #endif }); - } - p.ti = torrentInfo.nativeInfo(); + p.ti = torrentInfo.nativeInfo(); + } } // Common