Merge pull request #92182 from sttts/sttts-non-tcp-listener

apiserver: fix secure serving cast for non-tcp listeners
This commit is contained in:
Kubernetes Prow Robot 2020-06-18 06:02:42 -07:00 committed by GitHub
commit 6dced80b5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -218,7 +218,7 @@ func RunServer(
defer utilruntime.HandleCrash() defer utilruntime.HandleCrash()
var listener net.Listener var listener net.Listener
listener = tcpKeepAliveListener{ln.(*net.TCPListener)} listener = tcpKeepAliveListener{ln}
if server.TLSConfig != nil { if server.TLSConfig != nil {
listener = tls.NewListener(listener, server.TLSConfig) listener = tls.NewListener(listener, server.TLSConfig)
} }
@ -244,15 +244,17 @@ func RunServer(
// //
// Copied from Go 1.7.2 net/http/server.go // Copied from Go 1.7.2 net/http/server.go
type tcpKeepAliveListener struct { type tcpKeepAliveListener struct {
*net.TCPListener net.Listener
} }
func (ln tcpKeepAliveListener) Accept() (net.Conn, error) { func (ln tcpKeepAliveListener) Accept() (net.Conn, error) {
tc, err := ln.AcceptTCP() c, err := ln.Listener.Accept()
if err != nil { if err != nil {
return nil, err return nil, err
} }
tc.SetKeepAlive(true) if tc, ok := c.(*net.TCPConn); ok {
tc.SetKeepAlivePeriod(defaultKeepAlivePeriod) tc.SetKeepAlive(true)
return tc, nil tc.SetKeepAlivePeriod(defaultKeepAlivePeriod)
}
return c, nil
} }