From 297d8ddeb0d5834b47f40a5bd624aa0c2cfb9c7a Mon Sep 17 00:00:00 2001 From: Easwar Swaminathan Date: Mon, 11 Dec 2023 13:07:06 -0800 Subject: [PATCH] Cherry-pick #6841 to v1.60.x release branch (#6847) --- internal/tcp_keepalive_nonunix.go | 29 +++++++++++++++++++ ...tcp_keepalive.go => tcp_keepalive_unix.go} | 6 +++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 internal/tcp_keepalive_nonunix.go rename internal/{tcp_keepalive.go => tcp_keepalive_unix.go} (94%) diff --git a/internal/tcp_keepalive_nonunix.go b/internal/tcp_keepalive_nonunix.go new file mode 100644 index 000000000000..aeffd3e1c7b1 --- /dev/null +++ b/internal/tcp_keepalive_nonunix.go @@ -0,0 +1,29 @@ +//go:build !unix + +/* + * Copyright 2023 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package internal + +import ( + "net" +) + +// NetDialerWithTCPKeepalive returns a vanilla net.Dialer on non-unix platforms. +func NetDialerWithTCPKeepalive() *net.Dialer { + return &net.Dialer{} +} diff --git a/internal/tcp_keepalive.go b/internal/tcp_keepalive_unix.go similarity index 94% rename from internal/tcp_keepalive.go rename to internal/tcp_keepalive_unix.go index 9f6d039ac740..078137b7fd70 100644 --- a/internal/tcp_keepalive.go +++ b/internal/tcp_keepalive_unix.go @@ -1,3 +1,5 @@ +//go:build unix + /* * Copyright 2023 gRPC authors. * @@ -21,6 +23,8 @@ import ( "net" "syscall" "time" + + "golang.org/x/sys/unix" ) // NetDialerWithTCPKeepalive returns a net.Dialer that enables TCP keepalives on @@ -43,7 +47,7 @@ func NetDialerWithTCPKeepalive() *net.Dialer { // the TCP keealive interval and time parameters. Control: func(_, _ string, c syscall.RawConn) error { return c.Control(func(fd uintptr) { - syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_KEEPALIVE, 1) + unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_KEEPALIVE, 1) }) }, }