@@ -132,6 +132,7 @@ namespace boost { namespace network { namespace http { namespace impl {
132132bool stopping =false ;
133133do {
134134 std::size_t chunk_size_line =read_until (socket_, response_buffer," \r\n " , error);
135+ std::size_t tooMuchRead = response_buffer.size () - chunk_size_line;
135136if ((chunk_size_line ==0 ) && (error != boost::asio::error::eof))throw boost::system::system_error (error);
136137 std::size_t chunk_size =0 ;
137138 string_type data;
@@ -148,7 +149,8 @@ namespace boost { namespace network { namespace http { namespace impl {
148149 }else {
149150bool stopping_inner =false ;
150151do {
151- std::size_t chunk_bytes_read =read (socket_, response_buffer,boost::asio::transfer_at_least (chunk_size +2 ), error);
152+ assert ( tooMuchRead <= chunk_size +2 );
153+ std::size_t chunk_bytes_read =read (socket_, response_buffer,boost::asio::transfer_at_least (chunk_size +2 - tooMuchRead), error);
152154if (chunk_bytes_read ==0 ) {
153155if (error != boost::asio::error::eof)throw boost::system::system_error (error);
154156 stopping_inner =true ;