Occasionally bad peers send ridiculous or incorrect metadata_size in their handshakes. If the first acceptable size is wrong, and too small, we'll keep failing metadata completion. If it's too large, honest peers will never send us the pieces we're asking for and we'll never complete the metadata. Now we just adjust the expected metadata size, and keep retrying until we finish. Additionally, we can now request metadata after sending initial messages.
torrent
This repository implements BitTorrent-related packages and command-line utilities in Go.
There is support for protocol encryption, DHT, PEX, uTP, and various extensions. There are several storage backends provided, blob, file, mmap. You can use the provided binaries in ./cmd
, or use torrent
as a library for your own applications.
Installation
Install the library package with go get github.com/anacrolix/torrent
, or the provided cmds with go get github.com/anacrolix/torrent/cmd/...
.
Library example
There is a small example in the package documentation.
Torrent utility
There's a provided utility that downloads torrents from the command-line.
$ go get github.com/anacrolix/torrent/cmd/torrent
$ torrent 'magnet:?xt=urn:btih:ZOCMZQIPFFW7OLLMIC5HUB6BPCSDEOQU'
2015/03/20 22:51:41 main.go:96: downloaded ALL the torrents
$ md5sum ubuntu-14.04.1-desktop-amd64.iso
119cb63b48c9a18f31f417f09655efbd ubuntu-14.04.1-desktop-amd64.iso
$ echo such amaze
wow
Languages
Go
99.9%
Shell
0.1%