diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index 1cbd1b3c6..b3887047a 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -4105,6 +4105,11 @@ void SessionImpl::updateTrackersFromURL() { if (result.status == Net::DownloadStatus::Success) { + if (!result.contentType.contains(u"text/plain"_s, Qt::CaseInsensitive)) + { + LogMsg(tr("Cannot add trackers from URL, expected Content-Type is \'text/plain\' received \"%1\"").arg(result.contentType), Log::WARNING); + return; + } setAdditionalTrackersFromURL(QString::fromUtf8(result.data)); LogMsg(tr("Tracker list updated"), Log::INFO); return; diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp index 44e3f4c3e..7cb9be963 100644 --- a/src/gui/optionsdialog.cpp +++ b/src/gui/optionsdialog.cpp @@ -53,6 +53,7 @@ #include "base/bittorrent/sharelimitaction.h" #include "base/exceptions.h" #include "base/global.h" +#include "base/net/downloadmanager.h" #include "base/net/portforwarder.h" #include "base/net/proxyconfigurationmanager.h" #include "base/path.h" @@ -1227,42 +1228,9 @@ void OptionsDialog::saveBittorrentTabOptions() const BitTorrent::ShareLimitAction::EnableSuperSeeding }; session->setShareLimitAction(actIndex.value(m_ui->comboRatioLimitAct->currentIndex())); - session->setAddTrackersEnabled(m_ui->checkEnableAddTrackers->isChecked()); session->setAdditionalTrackers(m_ui->textTrackers->toPlainText()); - const bool isAddTrackersEnabled = m_ui->checkAddTrackersFromURL->isChecked(); - const QString url = m_ui->textTrackersURL->text(); - if (isAddTrackersEnabled && !url.isEmpty()) - { - Net::DownloadManager::instance()->download(url, Preferences::instance()->useProxyForGeneralPurposes() - , this, &OptionsDialog::onAdditionalTrackersDownload); - } - else - { - session->setAddTrackersFromURLEnabled(isAddTrackersEnabled); - session->setAdditionalTrackersURL(url); - } -} - -void OptionsDialog::onAdditionalTrackersDownload(const Net::DownloadResult &result) -{ - if (result.status != Net::DownloadStatus::Success) - { - QMessageBox::warning(this, tr("Download trackers list error") - , tr("Error occurred when downloading the trackers list. Reason: \"%1\"").arg(result.errorString)); - return; - } - - if (!result.contentType.contains(u"text/plain"_s, Qt::CaseInsensitive)) - { - QMessageBox::warning(this, tr("Download trackers list error") - , tr("The content type of the downloaded file is not plain text. Content-Type: \"%1\"").arg(result.contentType)); - return; - } - - auto *session = BitTorrent::Session::instance(); - session->setAddTrackersFromURLEnabled(m_ui->checkAddTrackersFromURL->isChecked()); session->setAdditionalTrackersURL(m_ui->textTrackersURL->text()); } diff --git a/src/gui/optionsdialog.h b/src/gui/optionsdialog.h index 6828c2ce4..c1e29c1d6 100644 --- a/src/gui/optionsdialog.h +++ b/src/gui/optionsdialog.h @@ -31,7 +31,6 @@ #include -#include "base/net/downloadmanager.h" #include "base/pathfwd.h" #include "base/settingvalue.h" #include "guiapplicationcomponent.h" @@ -138,8 +137,6 @@ private: void loadRSSTabOptions(); void saveRSSTabOptions() const; - void onAdditionalTrackersDownload(const Net::DownloadResult &result); - void loadSearchTabOptions(); void saveSearchTabOptions() const;