Log which peer contributed what to a piece. Do not try to download the
same piece from the same peers. Don't download at all from peers implicated
in 3 bad pieces. When a previously bad piece has been downloaded successfully
the bad peer(s) can be found and banned.
struct peer is now peer and meta_peer. meta_peer can be used as
a handle that won't be affected if a peer vanishes. The meta_peers
are kept in a hash table to enable fast lookup by peer id.
o Added ability to set the ratio items:buckets.
o One can remove items while iterating.
o _htbl_tov now allocates the result array, _htbl_fillv acts as the old
_htbl_tov did.
Unfortunately there are some useless IPv6 trackers that will
be used instead of their more usefull IPv4 counterparts when
IPv6 is enabled.
The -4 and -6 options are tweaked once again. If -6 is given
only IPv6 will be used. If both are given both will be used
and otherwise only IPv4 will be used.
The IPvX stuff should probably be set per torrent in the future.
Unfortunately many don't understand the tracker tiers and put unrelated
trackers in the same tier. Thus btpd can't assume that a failure from one
tracker in a tier is valid for all trackers in that tier.
Torrents are now considered stopped and may be restarted even if
the stop event haven't been sent the trackers yet. The same holds
for the del and add commands.
A btpd process in shutdown mode that only have stopped torrents,
but is still sending the stop event to trackers, will release
resources that would block a new btpd to start. It will the
silently exit when it's finished with the trackers.
This also makes the timeout parameter for shutdown unnecessary.
btpd now uses all tiers in parallel, so a torrent with two tiers will
essentially be treated by btpd as a torrent with two trackers to send
each event to. This is not quite what the multitrackes standard says,
but it's much easier to implement reasonable behaviour this way.
btpd is going to report the number of good trackers for a torrent
instead of the number of errors, but for now just report zero errors.
Btpd can now use both ipv4 and ipv6. The new options -4 and -6 toggles
use of ip v4 and v6 respectively. They are both used by default.
Remove restrictions on the --ip option since the spec allows to be a
dns name. Ultimately this option may need to be changed on a per
tracker/torrent basis.
This enables us to report errors in the btpd init sequence to the
shell by non zero exit code.
Changed from flock to lockf because of solaris troubles. I may
be confused though.