From 25bb1572f20e20b527be57ac44c559dd513c297d Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Fri, 29 Sep 2023 15:38:50 -0500 Subject: [PATCH] Set keep_alive false and indicate close on reply. Also add better error handling for ec --- tests/trx_generator/http_client_async.hpp | 8 +++----- tests/trx_generator/trx_provider.cpp | 4 ++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/trx_generator/http_client_async.hpp b/tests/trx_generator/http_client_async.hpp index d55dff5e46..15e525a0aa 100644 --- a/tests/trx_generator/http_client_async.hpp +++ b/tests/trx_generator/http_client_async.hpp @@ -73,7 +73,9 @@ class session : public std::enable_shared_from_this { req_.set(http::field::host, host); req_.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING); req_.set(http::field::content_type, content_type); + req_.set(http::field::connection, "close"); req_.body() = std::move(request_body); + req_.keep_alive(false); req_.prepare_payload(); // Look up the domain name @@ -129,16 +131,12 @@ class session : public std::enable_shared_from_this { void on_read(beast::error_code ec, std::size_t bytes_transferred) { boost::ignore_unused(bytes_transferred); - if (ec) { - response_callback_(ec, {}); - return fail(ec, "read"); - } - // Write the response message to the callback response_callback_(ec, res_); // Gracefully close the socket stream_.socket().shutdown(tcp::socket::shutdown_both, ec); + stream_.close(); // not_connected happens sometimes so don't bother reporting it. if (ec && ec != beast::errc::not_connected) diff --git a/tests/trx_generator/trx_provider.cpp b/tests/trx_generator/trx_provider.cpp index df2541146e..190c6b4632 100644 --- a/tests/trx_generator/trx_provider.cpp +++ b/tests/trx_generator/trx_provider.cpp @@ -133,6 +133,10 @@ namespace eosio::testing { [this, trx_id = trx.id()](boost::beast::error_code ec, boost::beast::http::response response) { trx_acknowledged(trx_id, fc::time_point::now()); + if (ec) { + elog("http error: ${c}: ${m}", ("c", ec.value())("m", ec.message())); + throw std::runtime_error(ec.message()); + } if (this->needs_response_trace_info() && response.result() == boost::beast::http::status::ok) { try {