Fix wrong 'tracker error' count

This happens when a torrent contains some tracker URLs that share the same domain.
Closes #17808.
This commit is contained in:
Chocobo1 2022-10-05 00:59:18 +08:00
parent 21aabfdcb5
commit 6fa4305aba
No known key found for this signature in database
GPG key ID: 210D9C873253A68C

View file

@ -70,11 +70,14 @@ namespace
return !scheme.isEmpty() ? scheme : u"http"_qs;
}
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())
@ -505,10 +508,8 @@ void TrackerFiltersList::addItems(const QString &trackerURL, const QVector<BitTo
void TrackerFiltersList::removeItem(const QString &trackerURL, const BitTorrent::TorrentID &id)
{
const QString host = getHost(trackerURL);
QSet<BitTorrent::TorrentID> torrentIDs = m_trackers.value(host).torrents;
if (torrentIDs.empty())
return;
QSet<BitTorrent::TorrentID> torrentIDs = m_trackers.value(host).torrents;
torrentIDs.remove(id);
QListWidgetItem *trackerItem = nullptr;