rakshasa / rtorrent

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

Neither "(min )interval" nor "retry in" (BEP 31) respected when receiving a "failure reason" #1215

Open paizenz opened 1 year ago

paizenz commented 1 year ago

When rTorrent receives a tracker response that includes a "failure reason", neither the supplied "interval", nor "min interval", nor the "retry in" (BEP 31) is respected.

Tested on rtorrent 0.9.6 WITH the workaround in place.

From an rtorrent log with "tracker_debug" enabled: ---DUMP--- d14:failure reason18:TORRENT NOT FOUND8:retry in5:never8:intervali7200e12:min intervali7200ee ---END---

This response received should at the very least result in rtorrent not announcing sooner than an hour. It should be two hours, but the increase to the maximum allowed interval was made in a later libtorrent version.

Instead, rtorrent starts to announce after 5 seconds for the 1st announce, then 10 seconds for the 2nd announce, then 20, etc., until it reaches a five minute interval, at which point it will continue to announce every five minutes. Since most users are slow to respond to such errors, it can mean that a single torrent will generate up to 12 times additional load compared to a regular torrent for days or even weeks on end.