Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#2889 closed Bug (fixed)

For tracker announces, handle up/down/corrupt counts on a per-tier basis

Reported by: charles Owned by: charles
Priority: Normal Milestone: 1.90
Component: libtransmission Version: 1.83
Severity: Critical Keywords:
Cc:

Description (last modified by charles)

Up through Transmission 1.83, these fields were held on a per-torrent basis.

The problem is that 1.7x and 1.8x have a seed-until-ratio feature, and users who set that ratio to 0 would have their torrents stop immediately after becoming seeds. Apparently the Mac client's torrent queue code could do the same thing in certain circumstances.

Stopping the torrent upon completion (either via the seed-until ratio, or via the Mac client's queue code) resets the up/down/corrupt count to zero, so there is a race condition between resetting those counts and firing out an &event=completed announce with accurate &uploaded=X &downloaded=Y &corrupt=Z values to the tracker.

A secondary, much smaller problem is that by keeping the byte counts at the per-tier level, we send the same values to all trackers, even if one of them was added after the torrent was started.

One way to fix both of these problems is by accumulating up/down/corrupt byte counts on a per-tier basis. These counts would only be reset when we send an &event=stopped announcement and receive a response from the tracker, and wouldn't care if the torrent was stopped a few milliseconds earlier by the seed ratio code.

Change History (3)

comment:1 Changed 12 years ago by charles

  • Status changed from new to assigned

fixed in r10141 for 1.90.

comment:2 Changed 12 years ago by charles

  • Resolution set to fixed
  • Status changed from assigned to closed

comment:3 Changed 12 years ago by charles

  • Description modified (diff)
Note: See TracTickets for help on using tickets.