From 7b4b7c2b81062ddec5c27573e3aeac17ff9460f3 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Sun, 16 Jul 2023 20:59:18 +0300 Subject: [PATCH] Always honor the configured behavior for merging trackers PR #19305. * Always honor the configured behavior for merging trackers * Clarify merging trackers related options --- src/base/bittorrent/sessionimpl.cpp | 10 ++++++++-- src/gui/optionsdialog.cpp | 11 +++++++++-- src/gui/optionsdialog.ui | 8 +------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index f09776120..e021a5453 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -2747,10 +2747,16 @@ bool SessionImpl::addTorrent_impl(const std::variant &so torrent->setMetadata(std::get(source)); } + if (!isMergeTrackersEnabled()) + { + LogMsg(tr("Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1").arg(torrent->name())); + return false; + } + const bool isPrivate = torrent->isPrivate() || (hasMetadata && std::get(source).isPrivate()); if (isPrivate) { - LogMsg(tr("Found existing torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1").arg(torrent->name())); + LogMsg(tr("Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1").arg(torrent->name())); return false; } @@ -2771,7 +2777,7 @@ bool SessionImpl::addTorrent_impl(const std::variant &so torrent->addUrlSeeds(magnetUri.urlSeeds()); } - LogMsg(tr("Found existing torrent. Trackers are merged from new source. Torrent: %1").arg(torrent->name())); + LogMsg(tr("Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1").arg(torrent->name())); return false; } diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp index c2e7efe18..d043dfbb6 100644 --- a/src/gui/optionsdialog.cpp +++ b/src/gui/optionsdialog.cpp @@ -505,7 +505,13 @@ void OptionsDialog::loadDownloadsTabOptions() m_ui->stopConditionComboBox->setEnabled(!m_ui->checkStartPaused->isChecked()); m_ui->checkMergeTrackers->setChecked(session->isMergeTrackersEnabled()); - m_ui->checkConfirmMergeTrackers->setChecked(pref->confirmMergeTrackers()); + m_ui->checkConfirmMergeTrackers->setEnabled(m_ui->checkAdditionDialog->isChecked()); + m_ui->checkConfirmMergeTrackers->setChecked(m_ui->checkConfirmMergeTrackers->isEnabled() ? pref->confirmMergeTrackers() : false); + connect(m_ui->checkAdditionDialog, &QGroupBox::toggled, this, [this, pref] + { + m_ui->checkConfirmMergeTrackers->setEnabled(m_ui->checkAdditionDialog->isChecked()); + m_ui->checkConfirmMergeTrackers->setChecked(m_ui->checkConfirmMergeTrackers->isEnabled() ? pref->confirmMergeTrackers() : false); + }); const TorrentFileGuard::AutoDeleteMode autoDeleteMode = TorrentFileGuard::autoDeleteMode(); m_ui->deleteTorrentBox->setChecked(autoDeleteMode != TorrentFileGuard::Never); @@ -692,7 +698,8 @@ void OptionsDialog::saveDownloadsTabOptions() const : !m_ui->deleteCancelledTorrentBox->isChecked() ? TorrentFileGuard::IfAdded : TorrentFileGuard::Always); session->setMergeTrackersEnabled(m_ui->checkMergeTrackers->isChecked()); - pref->setConfirmMergeTrackers(m_ui->checkConfirmMergeTrackers->isChecked()); + if (m_ui->checkConfirmMergeTrackers->isEnabled()) + pref->setConfirmMergeTrackers(m_ui->checkConfirmMergeTrackers->isChecked()); session->setPreallocationEnabled(preAllocateAllFiles()); session->setAppendExtensionEnabled(m_ui->checkAppendqB->isChecked()); diff --git a/src/gui/optionsdialog.ui b/src/gui/optionsdialog.ui index 08cdac51a..089cbb849 100644 --- a/src/gui/optionsdialog.ui +++ b/src/gui/optionsdialog.ui @@ -958,9 +958,6 @@ - - Whether trackers should be merged to existing torrent - Merge trackers to existing torrent @@ -971,11 +968,8 @@ - - Shows a confirmation dialog upon merging trackers to existing torrent - - Confirm merging trackers + Ask for merging trackers when torrent is being added manually true