rakshasa / rtorrent

rTorrent BitTorrent client
https://github.com/rakshasa/rtorrent/wiki
GNU General Public License v2.0
4.17k stars 415 forks source link

Tracker: [Object operator [peers] could not find element] #545

Open fvgs opened 7 years ago

fvgs commented 7 years ago

Running a freshly compiled libtorrent 0.13.6 and rtorrent 0.9.6 on a Raspberry Pi with Raspbian.

The above error is shown within the rtorrent interactive CLI consistently when trying to start the Raspbian torrent download. The torrent never begins to download and just remains in the started state but without actually making any progress due to the error.

I'm able to download other torrents just fine. Right now, this is the only torrent with which I've had an issue. Note also that I've been able to download this particular torrent without any issue using Deluge, uTorrent, and qBittorrent. Googling hasn't turned up much, but has revealed a couple of forum posts with the exact same issue. That is, the person is unable to download Raspbian using rtorrent on a RPi.

A bit of grep work through the codebase using the error string has led me to the following grep search:

grep -rE "get_key(_[a-zA-Z0-9]+)?\(([^\"|const]|\"peers\")" --exclude="*.h" .

This reveals what seem to me to be the likely sources of the error. I'm not familiar with the codebase, but working our way up the call chain leads to the process_success() and receive_done() functions in tracker_http.cc. Perhaps someone familiar with the codebase can determine precisely where the error is occurring and the cause?

pyroscope commented 7 years ago

Post a gist url of your config.

fvgs commented 7 years ago

I've been using the default rtorrent.rc as a baseline. I've tried various combinations of those settings including DHT, PEX, and UDP on/off, custom port, etc. They all lead to the same error. With DHT on, rtorrent does perform a check through DHT nodes for the Raspbian torrent, but at no point does any downloading occur for the torrent.

Trying to download the Raspbian torrent should probably be enough to reproduce the issue.

hurricanehrndz commented 7 years ago

I can confirm the issue, I do not experience the issue when downloading other distros like mate.

kannibalox commented 7 years ago

The peers value in the tracker response isn't encoded properly:

d8:completei873e10:downloadedi5339e10:incompletei15e8:intervali1746e12:min intervali873e6:peers6900:............HN....(etc)

6:peers6900:.... de-bencoded means a key name 6 characters in length, which would be peers6, then a length of 900 for the value.

>>> d = bencode.Decoder("d8:completei873e10:downloadedi5339e10:incompletei15e8:intervali1746e12:min intervali873e6:peers61:.e")
>>> d.decode()
{'min interval': 873, 'complete': 873, 'interval': 1746, 'downloaded': 5339, 'incomplete': 15, 'peers6': '.'}
pyroscope commented 7 years ago

The tracker only returns 50 IPv6 and no v4 addresses, that is all.

fvgs commented 7 years ago

I haven't been able to test this further. But in the interest of not leaving a dangling issue, is it within the scope of the rtorrent project to fix this? If not, please feel free to close.

pyroscope commented 7 years ago

Wait for full IPv6 support…

SkoZombie commented 7 years ago

I get this issue too with the raspbian torrent but it did download for me and is seeding for others although quite slowly. I'm not doing anything in my .rc file apart from a watch directory.

fastcat commented 7 years ago

I believe the raspbian torrent works because of DHT, which provides functionally a second tracker

andrewsav-bt commented 6 years ago

The announce url is http://tracker.raspberrypi.org:6969/announce