diff --git a/src/base/bittorrent/torrenthandle.h b/src/base/bittorrent/torrenthandle.h index 1960a8b3d..b87f505c2 100644 --- a/src/base/bittorrent/torrenthandle.h +++ b/src/base/bittorrent/torrenthandle.h @@ -287,6 +287,7 @@ namespace BitTorrent virtual void addUrlSeeds(const QVector &urlSeeds) = 0; virtual void removeUrlSeeds(const QVector &urlSeeds) = 0; virtual bool connectPeer(const PeerAddress &peerAddress) = 0; + virtual void clearPeers() = 0; virtual QString createMagnetURI() const = 0; diff --git a/src/base/bittorrent/torrenthandleimpl.cpp b/src/base/bittorrent/torrenthandleimpl.cpp index d2d20c65e..d88241687 100644 --- a/src/base/bittorrent/torrenthandleimpl.cpp +++ b/src/base/bittorrent/torrenthandleimpl.cpp @@ -432,6 +432,11 @@ void TorrentHandleImpl::replaceTrackers(const QVector &trackers) if (!newTrackers.isEmpty()) m_session->handleTorrentTrackersAdded(this, newTrackers); + + // Clear the peer list if it's a private torrent since + // we do not want to keep connecting with peers from old tracker. + if (isPrivate()) + clearPeers(); } } @@ -486,6 +491,13 @@ void TorrentHandleImpl::removeUrlSeeds(const QVector &urlSeeds) m_session->handleTorrentUrlSeedsRemoved(this, removedUrlSeeds); } +void TorrentHandleImpl::clearPeers() +{ +#if (LIBTORRENT_VERSION_NUM >= 10207) + m_nativeHandle.clear_peers(); +#endif +} + bool TorrentHandleImpl::connectPeer(const PeerAddress &peerAddress) { lt::error_code ec; diff --git a/src/base/bittorrent/torrenthandleimpl.h b/src/base/bittorrent/torrenthandleimpl.h index 7cefaea80..36aeeb504 100644 --- a/src/base/bittorrent/torrenthandleimpl.h +++ b/src/base/bittorrent/torrenthandleimpl.h @@ -237,6 +237,7 @@ namespace BitTorrent void addUrlSeeds(const QVector &urlSeeds) override; void removeUrlSeeds(const QVector &urlSeeds) override; bool connectPeer(const PeerAddress &peerAddress) override; + void clearPeers() override; QString createMagnetURI() const override; diff --git a/src/gui/properties/peerlistwidget.cpp b/src/gui/properties/peerlistwidget.cpp index 3a51a29d8..24253e8d5 100644 --- a/src/gui/properties/peerlistwidget.cpp +++ b/src/gui/properties/peerlistwidget.cpp @@ -256,7 +256,8 @@ void PeerListWidget::showPeerListMenu(const QPoint &) menu->setAttribute(Qt::WA_DeleteOnClose); // Add Peer Action - if (!torrent->isQueued() && !torrent->isChecking()) { + // Do not allow user to add peers in a private torrent + if (!torrent->isQueued() && !torrent->isChecking() && !torrent->isPrivate()) { const QAction *addPeerAct = menu->addAction(UIThemeManager::instance()->getIcon("user-group-new"), tr("Add a new peer...")); connect(addPeerAct, &QAction::triggered, this, [this, torrent]() {