http_seed_connection::http_seed_connection(peer_connection_args const& pack , web_seed_t& web) : web_connection_base(pack, web) , m_url(web.url) , m_web(&web) , m_response_left(0) , m_chunk_pos(0) , m_partial_chunk_header(0) { INVARIANT_CHECK; if (!m_settings.get_bool(settings_pack::report_web_seed_downloads)) ignore_stats(true); shared_ptr<torrent> tor = pack.tor.lock(); TORRENT_ASSERT(tor); int blocks_per_piece = tor->torrent_file().piece_length() / tor->block_size(); // multiply with the blocks per piece since that many requests are // merged into one http request max_out_request_queue(m_settings.get_int(settings_pack::urlseed_pipeline_size) * blocks_per_piece); prefer_contiguous_blocks(blocks_per_piece); #ifndef TORRENT_DISABLE_LOGGING peer_log(peer_log_alert::info, "CONNECT", "http_seed_connection"); #endif }
http_seed_connection::http_seed_connection( session_impl& ses , boost::weak_ptr<torrent> t , boost::shared_ptr<socket_type> s , tcp::endpoint const& remote , std::string const& url , policy::peer* peerinfo , std::string const& auth , web_seed_entry::headers_t const& extra_headers) : web_connection_base(ses, t, s, remote, url, peerinfo, auth, extra_headers) , m_url(url) , m_response_left(0) , m_chunk_pos(0) , m_partial_chunk_header(0) { INVARIANT_CHECK; if (!ses.settings().report_web_seed_downloads) ignore_stats(true); shared_ptr<torrent> tor = t.lock(); TORRENT_ASSERT(tor); int blocks_per_piece = tor->torrent_file().piece_length() / tor->block_size(); // multiply with the blocks per piece since that many requests are // merged into one http request m_max_out_request_queue = ses.settings().urlseed_pipeline_size * blocks_per_piece; prefer_whole_pieces(1); #ifdef TORRENT_VERBOSE_LOGGING peer_log("*** http_seed_connection"); #endif }