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();
}