Notes for BitTorrent™ authors from the GetRight author.
As I was developing the BitTorrent support in GetRight, I found a few quirks with other clients or things that weren't as documented as I would have liked...other implementors may wish to be aware of these things too!
- When pipelining requests, most clients return the blocks requested as if they're on a Queue (first requested, first returned.)
But at least one client does them as a Stack (last requested, first returned.) It messed up some of my pipelining things until I added a special check to handle it.
While it doesn't explicitly say anywhere in the documentations, I--and obviously most other implementors--believe a Queue is correct, but you'll likely need to handle both.
- Not sure if it was a bug, but I saw one client sending duplicate Have messages, so be prepared to handle them.
- Several clients support some sort of HTTP/FTP seeding. And I've even seen that the .torrents available on bittorrent.com included a http seed. Whether they read my notes about it, I don't know :)
GetRight's HTTP/FTP Seeding for BitTorrent