diff options
author | 2023-03-08 10:47:45 +0000 | |
---|---|---|
committer | 2023-03-08 10:47:45 +0000 | |
commit | 942245ea97084b7d48c9111aa558488a5a391473 (patch) | |
tree | 32b2539c2f55ba24c5b22e70ec84b48dc5f0b35c /libs/binder/RpcSession.cpp | |
parent | cabecdc66a44cdc55a3613382ef31c403eaa9dc7 (diff) | |
parent | 12af6f73218ed3e047527aa83f95387da962d071 (diff) |
Merge "RPC Binder: disable Nagle's algorithm"
Diffstat (limited to 'libs/binder/RpcSession.cpp')
-rw-r--r-- | libs/binder/RpcSession.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libs/binder/RpcSession.cpp b/libs/binder/RpcSession.cpp index 233a8e4b86..fbad0f7756 100644 --- a/libs/binder/RpcSession.cpp +++ b/libs/binder/RpcSession.cpp @@ -20,6 +20,7 @@ #include <dlfcn.h> #include <inttypes.h> +#include <netinet/tcp.h> #include <poll.h> #include <unistd.h> @@ -608,6 +609,18 @@ status_t RpcSession::setupOneSocketConnection(const RpcSocketAddress& addr, return -savedErrno; } + if (addr.addr()->sa_family == AF_INET || addr.addr()->sa_family == AF_INET6) { + int noDelay = 1; + int result = + setsockopt(serverFd.get(), IPPROTO_TCP, TCP_NODELAY, &noDelay, sizeof(noDelay)); + if (result < 0) { + int savedErrno = errno; + ALOGE("Could not set TCP_NODELAY on %s: %s", addr.toString().c_str(), + strerror(savedErrno)); + return -savedErrno; + } + } + RpcTransportFd transportFd(std::move(serverFd)); if (0 != TEMP_FAILURE_RETRY(connect(transportFd.fd.get(), addr.addr(), addr.addrSize()))) { |