diff --git a/boost/network/protocol/http/client/connection/async_protocol_handler.hpp b/boost/network/protocol/http/client/connection/async_protocol_handler.hpp index 6e31ae6b9..aad3e160b 100644 --- a/boost/network/protocol/http/client/connection/async_protocol_handler.hpp +++ b/boost/network/protocol/http/client/connection/async_protocol_handler.hpp @@ -361,13 +361,12 @@ struct http_async_protocol_handler { for (typename string_type::const_iterator iter = std::search(begin, partial_parsed.end(), crlf.begin(), crlf.end()); iter != partial_parsed.end(); - iter = - std::search(begin, partial_parsed.end(), crlf.begin(), crlf.end())) { + iter = std::search(begin, partial_parsed.end(), crlf.begin(), crlf.end())) { string_type line(begin, iter); if (line.empty()) { - std::advance(iter, 2); - begin = iter; - continue; + std::advance(iter, 2); + begin = iter; + continue; } std::stringstream stream(line); int len; @@ -375,8 +374,10 @@ struct http_async_protocol_handler { std::advance(iter, 2); if (!len) return true; if (len <= partial_parsed.end() - iter) { - std::advance(iter, len + 2); - } + std::advance(iter, len); + } else { + return false; + } begin = iter; } return false; @@ -391,7 +392,7 @@ struct http_async_protocol_handler { partial_parsed.append(part_begin, it); part_begin = part.begin(); if (check_parse_body_complete()) { - callback(boost::asio::error::eof, bytes); + callback(boost::asio::error::eof, 0); } else { delegate_->read_some( boost::asio::mutable_buffers_1(part.data(), part.size()), callback);