From 594f9e8632ef1a1a681adce1da7e04a7e73a17f6 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Thu, 22 Dec 2022 08:21:29 +0300 Subject: [PATCH] Use "additional trackers" when metadata retrieving This can help when the DHT nodes are few. PR #18251. Closes #18244. --- src/base/bittorrent/sessionimpl.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index b909e67a6..8450b756b 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -2931,6 +2931,19 @@ bool SessionImpl::downloadMetadata(const MagnetUri &magnetUri) lt::add_torrent_params p = magnetUri.addTorrentParams(); + if (isAddTrackersEnabled()) + { + // Use "additional trackers" when metadata retrieving (this can help when the DHT nodes are few) + p.trackers.reserve(p.trackers.size() + static_cast(m_additionalTrackerList.size())); + p.tracker_tiers.reserve(p.trackers.size() + static_cast(m_additionalTrackerList.size())); + p.tracker_tiers.resize(p.trackers.size(), 0); + for (const TrackerEntry &trackerEntry : asConst(m_additionalTrackerList)) + { + p.trackers.push_back(trackerEntry.url.toStdString()); + p.tracker_tiers.push_back(trackerEntry.tier); + } + } + // Flags // Preallocation mode if (isPreallocationEnabled())