@@ -36,14 +36,15 @@ import (
3636 "golang.org/x/net/http2/hpack"
3737 "google.golang.org/grpc/codes"
3838 "google.golang.org/grpc/credentials"
39+ "google.golang.org/grpc/internal"
3940 "google.golang.org/grpc/internal/channelz"
4041 icredentials "google.golang.org/grpc/internal/credentials"
4142 "google.golang.org/grpc/internal/grpclog"
4243 "google.golang.org/grpc/internal/grpcsync"
4344 "google.golang.org/grpc/internal/grpcutil"
4445 imetadata "google.golang.org/grpc/internal/metadata"
4546 istatus "google.golang.org/grpc/internal/status"
46- "google.golang.org/grpc/internal/syscall"
47+ isyscall "google.golang.org/grpc/internal/syscall"
4748 "google.golang.org/grpc/internal/transport/networktype"
4849 "google.golang.org/grpc/keepalive"
4950 "google.golang.org/grpc/metadata"
@@ -176,9 +177,7 @@ func dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error
176177 if networkType == "tcp" && useProxy {
177178 return proxyDial (ctx , address , grpcUA )
178179 }
179- // KeepAlive is set to a negative value to prevent Go's override of the TCP
180- // keepalive time and interval; retain the OS default.
181- return (& net.Dialer {KeepAlive : time .Duration (- 1 )}).DialContext (ctx , networkType , address )
180+ return internal .NetDialerWithTCPKeepalive ().DialContext (ctx , networkType , address )
182181}
183182
184183func isTemporary (err error ) bool {
@@ -264,7 +263,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts
264263 }
265264 keepaliveEnabled := false
266265 if kp .Time != infinity {
267- if err = syscall .SetTCPUserTimeout (conn , kp .Timeout ); err != nil {
266+ if err = isyscall .SetTCPUserTimeout (conn , kp .Timeout ); err != nil {
268267 return nil , connectionErrorf (false , err , "transport: failed to set TCP_USER_TIMEOUT: %v" , err )
269268 }
270269 keepaliveEnabled = true
0 commit comments