Alo Sarv
lead developer

Donate via

Latest Builds

version 0.3
tar.gz tar.bz2
Boost 1.33.1 Headers
MLDonkey Downloads Import Module Development
Payment completed
Development in progress.
Developer's Diary

Monday, April 24, 2006

Multi-tracker support; fixed toms-hardware feed

The main attraction today is full multi-tracker support for bittorrent module. This means the 'announce-list' field in torrent files, which can contain any number of additional trackers. As far as I understand the protocol, clients are supposed to connect to all of the known trackers, so that's what hydranode is doing now. What made implementing this take whole 4 hours was that I had to completely reorganize the Torrent class, and introduce new Tracker class into bittorrent module to handle this properly. Anyway, this should considerably improve bittorrent usage experience, since there are more trackers from which to get sources from now.

Additional fixes in bittorrent module were done as well, such as properly emitting PD_DL_COMPLETE event upon torrent completition, fixing few more crashes during torrent completition (a TODO list entry), and fixing up/down ratio calculation (the calculation was done at integer precision, but the expected result was floating-point value). Also fixed 'known torrents' handling when restarting the app before any files of the torrent were downloaded - the previous behaviour completely forgot the finished files of the torrent, which meant they were never seeded anymore. The bug came from a precondition that checked for the torrent's incoming directory's existance during startup, but that directory isn't created until after the first file of the torrent is completed (created-on-demand).

However, this isn't the end of the known torrents db problems - the thing was a quickhack a while ago, and the format isn't extendable, and now I need to store more stuff in there (remember uploaded/downloaded values over sessions), which means I basically have to kill the old format and start fresh, but that can potentially break upgrade path to 0.3 with existing torrent downloads/seeds. Unfortunately, currently I don't see any smooth upgrade paths, except for using a completely new file, but the 'known.dat' name is good for this stuff so ...

On the GUI side, I decided that the third line in the transfer details box (currently containing 'Artist', 'Album' etc fields - data that we won't have before 0.4, if even then), will display 'file status' information, which can be set by modules. E.g. bittorrent could set tracker connection information there. Hopefully I have time to implement it for 0.3, but it's gonna be close.

Additionally, I did some more fixes on GUI side regarding the 'column hiding' code implemented few days ago; it should behave properly now (some columns were restored at 10px widths before).

Madcat, ZzZz

I'm just wondering if hn's bt module now support UDP tracker or not.
Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?