diff --git a/erpc_c/transports/erpc_tcp_transport.cpp b/erpc_c/transports/erpc_tcp_transport.cpp index 269ee0268..a23777764 100644 --- a/erpc_c/transports/erpc_tcp_transport.cpp +++ b/erpc_c/transports/erpc_tcp_transport.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -57,6 +58,9 @@ using namespace erpc; #define TCP_DEBUG_ERR(_msg_) #endif +#ifndef SOL_TCP +#define SOL_TCP IPPROTO_TCP +#endif //////////////////////////////////////////////////////////////////////////////// // Code //////////////////////////////////////////////////////////////////////////////// @@ -299,6 +303,13 @@ void TCPTransport::serverThread(void) ::close(serverSocket); return; } + result = setsockopt(serverSocket, SOL_TCP, TCP_NODELAY, &yes, sizeof(yes)); + if (result < 0) + { + TCP_DEBUG_ERR("setsockopt failed"); + ::close(serverSocket); + return; + } // Bind socket to address. result = bind(serverSocket, (struct sockaddr *)&serverAddress, sizeof(serverAddress)); diff --git a/erpc_python/erpc/transport.py b/erpc_python/erpc/transport.py index 747e905c8..390cd5ac8 100644 --- a/erpc_python/erpc/transport.py +++ b/erpc_python/erpc/transport.py @@ -149,6 +149,7 @@ def _serve(self): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setblocking(1) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + s.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1) s.bind((self._host, self._port)) s.listen(5)