diff --git a/src/network/rest/http/HTTPClient.h b/src/network/rest/http/HTTPClient.h index 3728444e..855eb8ac 100644 --- a/src/network/rest/http/HTTPClient.h +++ b/src/network/rest/http/HTTPClient.h @@ -142,6 +142,10 @@ namespace network /// virtual void entry() { + if (m_completed) { + return; + } + asio::ip::tcp::resolver resolver(m_ioContext); auto endpoints = resolver.resolve(m_address, std::to_string(m_port)); @@ -163,6 +167,15 @@ namespace network void connect(asio::ip::basic_resolver_results& endpoints) { asio::connect(m_socket, endpoints); + + // enable SO_LINGER timeout 0 + asio::socket_base::linger linger(true, 0); + m_socket.set_option(linger); + + // enable TCP_NODELAY + asio::ip::tcp::no_delay noDelay(true); + m_socket.set_option(noDelay); + m_connection = new_unique(ConnectionType, std::move(m_socket), m_requestHandler); m_connection->start(); }