From c2e1b75946b44987b4dd4fdc77af1704b2f2ffe4 Mon Sep 17 00:00:00 2001 From: Gregory Kuhn Date: Wed, 20 Jun 2018 10:07:37 +0100 Subject: [PATCH 1/2] adding TCP_NODELAY socket flag to server socket to reduce transaction latency --- erpc_c/transports/erpc_tcp_transport.cpp | 8 ++++++++ erpc_python/erpc/transport.py | 1 + 2 files changed, 9 insertions(+) diff --git a/erpc_c/transports/erpc_tcp_transport.cpp b/erpc_c/transports/erpc_tcp_transport.cpp index 269ee0268..72ee9b493 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 @@ -299,6 +300,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) From a9b7601d78e668432bba942e98568a7f33584de9 Mon Sep 17 00:00:00 2001 From: Gregory Kuhn Date: Sun, 15 Jul 2018 13:38:33 +0100 Subject: [PATCH 2/2] Adding redifine for SOL_TCP if it's not defined in included headers or referenced header is missing --- erpc_c/transports/erpc_tcp_transport.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/erpc_c/transports/erpc_tcp_transport.cpp b/erpc_c/transports/erpc_tcp_transport.cpp index 72ee9b493..a23777764 100644 --- a/erpc_c/transports/erpc_tcp_transport.cpp +++ b/erpc_c/transports/erpc_tcp_transport.cpp @@ -58,6 +58,9 @@ using namespace erpc; #define TCP_DEBUG_ERR(_msg_) #endif +#ifndef SOL_TCP +#define SOL_TCP IPPROTO_TCP +#endif //////////////////////////////////////////////////////////////////////////////// // Code ////////////////////////////////////////////////////////////////////////////////