diff --git a/src/http_req.cc b/src/http_req.cc index d191aa285..3ac1c5ff0 100644 --- a/src/http_req.cc +++ b/src/http_req.cc @@ -24,6 +24,8 @@ namespace http = beast::http; namespace asio = boost::asio; namespace ssl = asio::ssl; +constexpr auto const kBodySizeLimit = 128U * 1024U * 1024U; // 128 M + template asio::awaitable req(Stream&&, boost::urls::url const&, @@ -94,14 +96,17 @@ asio::awaitable req( co_await http::async_write(stream, req); + auto p = http::response_parser{}; + p.eager(true); + p.body_limit(kBodySizeLimit); + auto buffer = beast::flat_buffer{}; - auto res = http::response{}; - co_await http::async_read(stream, buffer, res); + co_await http::async_read(stream, buffer, p); auto ec = beast::error_code{}; beast::get_lowest_layer(stream).socket().shutdown( asio::ip::tcp::socket::shutdown_both, ec); - co_return res; + co_return p.release(); } asio::awaitable> http_GET(