From 2c3687c255c014f7049eed159de30a82082656b6 Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Tue, 16 Jun 2020 13:31:32 +0200 Subject: [PATCH] apiserver: fix secure serving cast for non-tcp listeners --- .../k8s.io/apiserver/pkg/server/secure_serving.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/server/secure_serving.go b/staging/src/k8s.io/apiserver/pkg/server/secure_serving.go index b5b108ce732..16cd04c6568 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/secure_serving.go +++ b/staging/src/k8s.io/apiserver/pkg/server/secure_serving.go @@ -218,7 +218,7 @@ func RunServer( defer utilruntime.HandleCrash() var listener net.Listener - listener = tcpKeepAliveListener{ln.(*net.TCPListener)} + listener = tcpKeepAliveListener{ln} if server.TLSConfig != nil { listener = tls.NewListener(listener, server.TLSConfig) } @@ -244,15 +244,17 @@ func RunServer( // // Copied from Go 1.7.2 net/http/server.go type tcpKeepAliveListener struct { - *net.TCPListener + net.Listener } func (ln tcpKeepAliveListener) Accept() (net.Conn, error) { - tc, err := ln.AcceptTCP() + c, err := ln.Listener.Accept() if err != nil { return nil, err } - tc.SetKeepAlive(true) - tc.SetKeepAlivePeriod(defaultKeepAlivePeriod) - return tc, nil + if tc, ok := c.(*net.TCPConn); ok { + tc.SetKeepAlive(true) + tc.SetKeepAlivePeriod(defaultKeepAlivePeriod) + } + return c, nil }