From 1b0fd456439e5ce461189c6234b10b52b98d88f8 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Wed, 5 Oct 2022 00:59:18 +0800 Subject: [PATCH] Fix wrong 'tracker error' count This happens when a torrent contains some tracker URLs that share the same domain. Closes #17808. --- src/gui/transferlistfilterswidget.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/gui/transferlistfilterswidget.cpp b/src/gui/transferlistfilterswidget.cpp index 042e955b2..83d926d27 100644 --- a/src/gui/transferlistfilterswidget.cpp +++ b/src/gui/transferlistfilterswidget.cpp @@ -72,11 +72,14 @@ namespace return scheme; } - QString getHost(const QString &tracker) + QString getHost(const QString &url) { // We want the domain + tld. Subdomains should be disregarded - const QUrl url {tracker}; - const QString host {url.host()}; + // If failed to parse the domain or IP address, original input should be returned + + const QString host = QUrl(url).host(); + if (host.isEmpty()) + return url; // host is in IP format if (!QHostAddress(host).isNull()) @@ -388,10 +391,8 @@ void TrackerFiltersList::addItem(const QString &tracker, const BitTorrent::Torre void TrackerFiltersList::removeItem(const QString &tracker, const BitTorrent::TorrentID &id) { const QString host = getHost(tracker); - QSet torrentIDs = m_trackers.value(host); - if (torrentIDs.empty()) - return; + QSet torrentIDs = m_trackers.value(host); torrentIDs.remove(id); int row = 0;