Address some issues regarding private torrents

This commit is contained in:
an0n666 2020-05-21 13:21:00 +06:00
parent de85b8b552
commit 6d85ae8f62
4 changed files with 16 additions and 1 deletions

View file

@ -287,6 +287,7 @@ namespace BitTorrent
virtual void addUrlSeeds(const QVector<QUrl> &urlSeeds) = 0;
virtual void removeUrlSeeds(const QVector<QUrl> &urlSeeds) = 0;
virtual bool connectPeer(const PeerAddress &peerAddress) = 0;
virtual void clearPeers() = 0;
virtual QString createMagnetURI() const = 0;

View file

@ -432,6 +432,11 @@ void TorrentHandleImpl::replaceTrackers(const QVector<TrackerEntry> &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<QUrl> &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;

View file

@ -237,6 +237,7 @@ namespace BitTorrent
void addUrlSeeds(const QVector<QUrl> &urlSeeds) override;
void removeUrlSeeds(const QVector<QUrl> &urlSeeds) override;
bool connectPeer(const PeerAddress &peerAddress) override;
void clearPeers() override;
QString createMagnetURI() const override;

View file

@ -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]()
{