lt bug fixes

This commit is contained in:
Marcos Pinto 2007-12-12 20:23:31 +00:00
parent 657055cab1
commit 79b0f67760
3 changed files with 17 additions and 3 deletions

View File

@ -111,7 +111,7 @@ struct bandwidth_limit
void assign(int amount) throw() void assign(int amount) throw()
{ {
TORRENT_ASSERT(amount > 0); TORRENT_ASSERT(amount >= 0);
m_current_rate += amount; m_current_rate += amount;
m_quota_left += amount; m_quota_left += amount;
} }

View File

@ -284,7 +284,17 @@ void http_connection::on_read(asio::error_code const& e
{ {
libtorrent::buffer::const_interval rcv_buf(&m_recvbuffer[0] libtorrent::buffer::const_interval rcv_buf(&m_recvbuffer[0]
, &m_recvbuffer[0] + m_read_pos); , &m_recvbuffer[0] + m_read_pos);
try
{
m_parser.incoming(rcv_buf); m_parser.incoming(rcv_buf);
}
catch (std::exception& e)
{
m_timer.cancel();
m_handler(asio::error::fault, m_parser, 0, 0);
m_handler.clear();
return;
}
if (!m_bottled && m_parser.header_finished()) if (!m_bottled && m_parser.header_finished())
{ {
if (m_read_pos > m_parser.body_start()) if (m_read_pos > m_parser.body_start())

View File

@ -217,7 +217,11 @@ namespace libtorrent
char dummy; char dummy;
std::string bytes; std::string bytes;
size_type range_start, range_end; size_type range_start, range_end;
range_str >> bytes >> range_start >> dummy >> range_end; // apparently some web servers do not send the "bytes"
// in their content-range
if (value.find(' ') != std::string::npos)
range_str >> bytes;
range_str >> range_start >> dummy >> range_end;
if (!range_str || range_end < range_start) if (!range_str || range_end < range_start)
{ {
throw std::runtime_error("invalid content-range in HTTP response: " + range_str.str()); throw std::runtime_error("invalid content-range in HTTP response: " + range_str.str());