diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index d203a60cd..608dceef7 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -2039,14 +2039,14 @@ bool Session::addTorrent(const MagnetUri &magnetUri, const AddTorrentParams &par { if (!magnetUri.isValid()) return false; - return addTorrent_impl(params, magnetUri); + return addTorrent_impl(magnetUri, params); } bool Session::addTorrent(const TorrentInfo &torrentInfo, const AddTorrentParams ¶ms) { if (!torrentInfo.isValid()) return false; - return addTorrent_impl(params, MagnetUri(), torrentInfo); + return addTorrent_impl(torrentInfo, params); } LoadTorrentParams Session::initLoadTorrentParams(const AddTorrentParams &addTorrentParams) @@ -2087,9 +2087,11 @@ LoadTorrentParams Session::initLoadTorrentParams(const AddTorrentParams &addTorr } // Add a torrent to the BitTorrent session -bool Session::addTorrent_impl(const AddTorrentParams &addTorrentParams, const MagnetUri &magnetUri, TorrentInfo metadata) +bool Session::addTorrent_impl(const std::variant &source, const AddTorrentParams &addTorrentParams) { - const bool hasMetadata = metadata.isValid(); + const bool hasMetadata = std::holds_alternative(source); + TorrentInfo metadata = (hasMetadata ? std::get(source) : TorrentInfo {}); + const MagnetUri &magnetUri = (hasMetadata ? MagnetUri {} : std::get(source)); const InfoHash hash = (hasMetadata ? metadata.hash() : magnetUri.hash()); // It looks illogical that we don't just use an existing handle, diff --git a/src/base/bittorrent/session.h b/src/base/bittorrent/session.h index 041d82d80..a5521dba3 100644 --- a/src/base/bittorrent/session.h +++ b/src/base/bittorrent/session.h @@ -30,6 +30,7 @@ #pragma once #include +#include #include #include @@ -600,7 +601,7 @@ namespace BitTorrent bool loadTorrentResumeData(const QByteArray &data, const TorrentInfo &metadata, LoadTorrentParams &torrentParams); bool loadTorrent(LoadTorrentParams params); LoadTorrentParams initLoadTorrentParams(const AddTorrentParams &addTorrentParams); - bool addTorrent_impl(const AddTorrentParams &addTorrentParams, const MagnetUri &magnetUri, TorrentInfo torrentInfo = TorrentInfo()); + bool addTorrent_impl(const std::variant &source, const AddTorrentParams &addTorrentParams); void updateSeedingLimitTimer(); void exportTorrentFile(const TorrentHandle *torrent, TorrentExportFolder folder = TorrentExportFolder::Regular);