fixed web seed test to work with invariant checks turned on and fixed error reporting when receiving an unexpected responce for http seeds
This commit is contained in:
parent
a76570b563
commit
0773644a4e
|
@ -333,6 +333,14 @@ namespace libtorrent
|
||||||
disconnect(errors::no_content_length, 2);
|
disconnect(errors::no_content_length, 2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (m_response_left != front_request.length)
|
||||||
|
{
|
||||||
|
m_statistics.received_bytes(0, bytes_transferred);
|
||||||
|
// we should not try this server again.
|
||||||
|
t->remove_web_seed(this);
|
||||||
|
disconnect(errors::invalid_range, 2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (payload > m_response_left) payload = m_response_left;
|
if (payload > m_response_left) payload = m_response_left;
|
||||||
m_body_start = m_parser.body_start();
|
m_body_start = m_parser.body_start();
|
||||||
m_response_left -= payload;
|
m_response_left -= payload;
|
||||||
|
|
|
@ -2860,7 +2860,9 @@ ret:
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(num_slots > 0);
|
TORRENT_ASSERT(num_slots > 0);
|
||||||
|
|
||||||
|
#ifdef TORRENT_EXPENSIVE_INVARIANT_CHECKS
|
||||||
INVARIANT_CHECK;
|
INVARIANT_CHECK;
|
||||||
|
#endif
|
||||||
|
|
||||||
TORRENT_ASSERT(!m_unallocated_slots.empty());
|
TORRENT_ASSERT(!m_unallocated_slots.empty());
|
||||||
TORRENT_ASSERT(m_storage_mode == storage_mode_compact);
|
TORRENT_ASSERT(m_storage_mode == storage_mode_compact);
|
||||||
|
@ -2869,8 +2871,6 @@ ret:
|
||||||
|
|
||||||
for (int i = 0; i < num_slots && !m_unallocated_slots.empty(); ++i)
|
for (int i = 0; i < num_slots && !m_unallocated_slots.empty(); ++i)
|
||||||
{
|
{
|
||||||
// INVARIANT_CHECK;
|
|
||||||
|
|
||||||
int pos = m_unallocated_slots.front();
|
int pos = m_unallocated_slots.front();
|
||||||
TORRENT_ASSERT(m_slot_to_piece[pos] == unallocated);
|
TORRENT_ASSERT(m_slot_to_piece[pos] == unallocated);
|
||||||
TORRENT_ASSERT(m_piece_to_slot[pos] != pos);
|
TORRENT_ASSERT(m_piece_to_slot[pos] != pos);
|
||||||
|
|
|
@ -3418,7 +3418,6 @@ namespace libtorrent
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
web->resolving = true;
|
|
||||||
proxy_settings const& ps = m_ses.proxy();
|
proxy_settings const& ps = m_ses.proxy();
|
||||||
if (ps.type == proxy_settings::http
|
if (ps.type == proxy_settings::http
|
||||||
|| ps.type == proxy_settings::http_pw)
|
|| ps.type == proxy_settings::http_pw)
|
||||||
|
@ -3436,6 +3435,7 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
web->resolving = true;
|
||||||
tcp::resolver::query q(hostname, to_string(port).elems);
|
tcp::resolver::query q(hostname, to_string(port).elems);
|
||||||
m_ses.m_host_resolver.async_resolve(q,
|
m_ses.m_host_resolver.async_resolve(q,
|
||||||
boost::bind(&torrent::on_name_lookup, shared_from_this(), _1, _2, web
|
boost::bind(&torrent::on_name_lookup, shared_from_this(), _1, _2, web
|
||||||
|
@ -3501,6 +3501,7 @@ namespace libtorrent
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
web->resolving = true;
|
||||||
tcp::resolver::query q(hostname, to_string(port).elems);
|
tcp::resolver::query q(hostname, to_string(port).elems);
|
||||||
m_ses.m_host_resolver.async_resolve(q,
|
m_ses.m_host_resolver.async_resolve(q,
|
||||||
boost::bind(&torrent::on_name_lookup, shared_from_this(), _1, _2, web, a));
|
boost::bind(&torrent::on_name_lookup, shared_from_this(), _1, _2, web, a));
|
||||||
|
|
|
@ -869,12 +869,12 @@ void web_server_thread(int* port, bool ssl, bool chunked)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
range_start = 0;
|
range_start = 0;
|
||||||
// assume piece size of 16
|
// assume piece size of 64kiB
|
||||||
range_end = 16-1;
|
range_end = 64*1024-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int size = range_end - range_start + 1;
|
int size = range_end - range_start + 1;
|
||||||
boost::uint64_t off = idx * 16 + range_start;
|
boost::uint64_t off = idx * 64 * 1024 + range_start;
|
||||||
std::vector<char> file_buf;
|
std::vector<char> file_buf;
|
||||||
int res = load_file("./tmp1_web_seed/seed", file_buf);
|
int res = load_file("./tmp1_web_seed/seed", file_buf);
|
||||||
|
|
||||||
|
|
|
@ -195,6 +195,7 @@ int run_suite(char const* protocol, bool test_url_seed, bool chunked_encoding)
|
||||||
|
|
||||||
file_storage fs;
|
file_storage fs;
|
||||||
std::srand(10);
|
std::srand(10);
|
||||||
|
int piece_size = 16;
|
||||||
if (test_url_seed)
|
if (test_url_seed)
|
||||||
{
|
{
|
||||||
int file_sizes[] =
|
int file_sizes[] =
|
||||||
|
@ -214,7 +215,8 @@ int run_suite(char const* protocol, bool test_url_seed, bool chunked_encoding)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char random_data[10000];
|
piece_size = 64 * 1024;
|
||||||
|
char random_data[64 * 1024 * 50];
|
||||||
std::generate(random_data, random_data + sizeof(random_data), &std::rand);
|
std::generate(random_data, random_data + sizeof(random_data), &std::rand);
|
||||||
save_file("./tmp1_web_seed/seed", random_data, sizeof(random_data));
|
save_file("./tmp1_web_seed/seed", random_data, sizeof(random_data));
|
||||||
fs.add_file("seed", sizeof(random_data));
|
fs.add_file("seed", sizeof(random_data));
|
||||||
|
@ -222,7 +224,7 @@ int run_suite(char const* protocol, bool test_url_seed, bool chunked_encoding)
|
||||||
|
|
||||||
int port = start_web_server(strcmp(protocol, "https") == 0, chunked_encoding);
|
int port = start_web_server(strcmp(protocol, "https") == 0, chunked_encoding);
|
||||||
|
|
||||||
libtorrent::create_torrent t(fs, 16, 0, libtorrent::create_torrent::calculate_file_hashes);
|
libtorrent::create_torrent t(fs, piece_size, 0, libtorrent::create_torrent::calculate_file_hashes);
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
if (test_url_seed)
|
if (test_url_seed)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue