Skip to content

Commit 1dce100

Browse files
committed
Disable Nagle algorithm in Windows
1 parent dc1089a commit 1dce100

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/core/lib/iomgr/tcp_windows.cc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,19 @@ static grpc_error* enable_loopback_fast_path(SOCKET sock) {
8888
: GRPC_WSA_ERROR(status, "WSAIoctl(SIO_LOOPBACK_FAST_PATH)");
8989
}
9090

91+
static grpc_error* enable_socket_low_latency(SOCKET sock) {
92+
int status;
93+
BOOL param = TRUE;
94+
status = ::setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,
95+
reinterpret_cast<char*>(&param), sizeof(param));
96+
if (status == SOCKET_ERROR) {
97+
status = WSAGetLastError();
98+
}
99+
return status == 0
100+
? GRPC_ERROR_NONE
101+
: GRPC_WSA_ERROR(status, "setsockopt(TCP_NODELAY)");
102+
}
103+
91104
grpc_error* grpc_tcp_prepare_socket(SOCKET sock) {
92105
grpc_error* err;
93106
err = grpc_tcp_set_non_block(sock);
@@ -96,6 +109,8 @@ grpc_error* grpc_tcp_prepare_socket(SOCKET sock) {
96109
if (err != GRPC_ERROR_NONE) return err;
97110
err = enable_loopback_fast_path(sock);
98111
if (err != GRPC_ERROR_NONE) return err;
112+
err = enable_socket_low_latency(sock);
113+
if (err != GRPC_ERROR_NONE) return err;
99114
return GRPC_ERROR_NONE;
100115
}
101116

0 commit comments

Comments
 (0)