mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2026-03-02 22:57:32 -05:00
Incorrect Seeds / Peers for some tracker(s). #16710
Labels
No labels
Accessibility
AppImage
Bounty
Build system
CI
Can't reproduce
Code cleanup
Confirmed bug
Confirmed bug
Core
Crash
Data loss
Discussion
Docker
Documentation
Duplicate
Feature
Feature request
Feature request
Feature request
Filters
Flatpak
GUI
Has workaround
I2P
Invalid
Libtorrent
Look and feel
Meta
NSIS
Network
Not an issue
OS: *BSD
OS: Linux
OS: Windows
OS: macOS
PPA
Performance
Project management
Proxy/VPN
Qt bugs
Qt6 compat
RSS
Search engine
Security
Temp folder
Themes
Translations
Triggers
Waiting diagnosis
Waiting info
Waiting upstream
Waiting web implementation
Watched folders
WebAPI
WebUI
autoCloseOldIssue
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/qBittorrent#16710
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @bretter on GitHub (Mar 13, 2025).
qBittorrent & operating system versions
qbittorrent: 5.0.4
OS: Arch Linux (current)
libtorrent-rasterbar: 2.0.11
What is the problem?
qBittorrent mis-identifies large numbers of seeders as peers for torrents downloaded from hdbits, showing significantly lower seed counts and higher peer counts than the site's peer list or other torrent clients.
As an example, one torrent downloaded from hdbits shows the following seeds and peers:
qBittorrent: Seeds = 10 | Peers = 83
Transmission: Seeds = 48 | Peers = 1
Site's Peer List: Seeds = Seeds 49 | Peers = 1
The problem with this mis-identification is that qBittorrent will activate connections with these peers, resulting in hundreds of active peer connections which are actually seeder-to-seeder connections. Even when no bandwidth is being used, these active connections increase cpu utilization substantially compared to when torrents from that tracker are stopped.
Steps to reproduce
Additional context
I spent some time capturing packets via tcpdump and wasn't able to learn much except that hdbits seems to be the only tracker among the trackers I use that uses the bittorrent scrape convention. This was evidenced by a plaintext get request to their scrape url.
For all other trackers I'm using qBittorrent reports seed / peer numbers that are consistent with their respective websites and other clients.
Log(s) & preferences file(s)
happy to provide any relevant logs / preferences upon request
@HanabishiRecca commented on GitHub (Mar 14, 2025):
That's unavoidable in any case. Scrape only provides counters, it does not carry information about individual peers.
The tracker request itself also does not provide any info about peers beside their IP address and port. So the client must connect to every peer to learn who is who, there is no way around that.
There is a tunable in
Settings>AdvancedcalledOutgoing connections per second. You could set it to some acceptable number for you, or even to0to prevent any outgoing connections.@stalkerok commented on GitHub (Mar 14, 2025):
The tracker only provides a list of peers with no seeds/leechers separation, unfortunately qBittorrent (libtorrent) can't properly identify who is who and this is a really issue.
@bretter commented on GitHub (Mar 14, 2025):
Thanks for the input @stalkerok, @HanabishiRecca
Is there a good way to capture the list of individual peers reported by the tracker and the seed / peer counts as captured during the scrape?
It seems like there might be two issues here:
I'd like to confirm what the tracker is reporting to better understand if (2) might be bad data from the tracker itself.
@stalkerok commented on GitHub (Mar 14, 2025):
This issue is not only related to private trackers, it is more global. The inability of qBittorrent (libtorrent) to adequately determine the number of seeds on its own, without relying on tracker data (the case when the tracker provides incorrect peers/seeds/leechers data), makes it very difficult to manage torrents, because the actual number of seeds in the swarm is very different from the values in the columns in the transfer list.
I have already written about this many times.
@HanabishiRecca commented on GitHub (Mar 14, 2025):
Use Wireshark instead of raw tcpdump. Capture with filter
tcp port 80(assuming that the tracker is http).To understand responses read about peer list and scrape formats.
@bretter commented on GitHub (Mar 14, 2025):
This issue seems to be captured in the libtorrent issue tracker here:
libtorrent 2.0.x is much too aggressive in retrying connections to known seeds
@stalkerok commented on GitHub (Mar 14, 2025):
https://github.com/arvidn/libtorrent/issues/7444
@reardonia commented on GitHub (Oct 28, 2025):
Yes, this is the same issue as libtorrent#7700. qBt+libtorrent is not "learning" about seeds. Even though the peer communicates that it is "upload_only" peer, aka seed, qBt (as seed) will keep contacting that peer.