libtorrent icon indicating copy to clipboard operation
libtorrent copied to clipboard

Magnet-URI Webseeding

Open milahu opened this issue 6 months ago • 0 comments

implement https://github.com/bittorrent/bittorrent.org/pull/171

status: early draft

i need help to get from "parse magnet link with xs parameter" to "send http request to fetch metadata file" should the http server be treated like a bittorrent peer?

so far, i tried to base exact_source_connection on web_connection_base (which is based on peer_connection) but it should be based on http_connection (right?) but i dont see where i should create the http_connection

i need "dont require files_checked to connect to webseeds" to reach my code files_checked makes no sense when we have no metadata

currently the parser fails at

[1027] xxxxxxxxxxxxxxx peer [ 127.0.0.1:80 client: Unknown [ .]....S....i.|.....] ] [127.0.0.1:80] <<< exact_source_connection::on_receive [ loop step: m_parser.status_code() == -1 ]

this looks like exact_source_connection::m_parser is not an http parser...? because recv_buffer contains a valid http response

HTTP/1.1 200 OK
Content-Length: 800
Connection: keep-alive

d8:announce30:udp://...

exact_source_connection examples:

./examples/exact_source_client "magnet:?xt=urn:btih:xxxxxxxxxxxxxxx&xs=http://127.0.0.1/cas/btih/xxxxxxxxxxxxxxx.torrent"
./examples/exact_source_client "magnet:?xt=urn:btih:xxxxxxxxxxxxxxx&cas=http://127.0.0.1/cas/"

this requires an http server on 127.0.0.1 serving metadata and content files under http://127.0.0.1/cas/

http://127.0.0.1/cas/btih/xxxxxxxxxxxxxxx.torrent
http://127.0.0.1/cas/btih/xxxxxxxxxxxxxxx/Some.Dir/Some.File.txt

milahu avatar Jun 21 '25 17:06 milahu