Skip to content

Commit 2c3687c

Browse files
committed
apiserver: fix secure serving cast for non-tcp listeners
1 parent 1fa2030 commit 2c3687c

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

staging/src/k8s.io/apiserver/pkg/server/secure_serving.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ func RunServer(
218218
defer utilruntime.HandleCrash()
219219

220220
var listener net.Listener
221-
listener = tcpKeepAliveListener{ln.(*net.TCPListener)}
221+
listener = tcpKeepAliveListener{ln}
222222
if server.TLSConfig != nil {
223223
listener = tls.NewListener(listener, server.TLSConfig)
224224
}
@@ -244,15 +244,17 @@ func RunServer(
244244
//
245245
// Copied from Go 1.7.2 net/http/server.go
246246
type tcpKeepAliveListener struct {
247-
*net.TCPListener
247+
net.Listener
248248
}
249249

250250
func (ln tcpKeepAliveListener) Accept() (net.Conn, error) {
251-
tc, err := ln.AcceptTCP()
251+
c, err := ln.Listener.Accept()
252252
if err != nil {
253253
return nil, err
254254
}
255-
tc.SetKeepAlive(true)
256-
tc.SetKeepAlivePeriod(defaultKeepAlivePeriod)
257-
return tc, nil
255+
if tc, ok := c.(*net.TCPConn); ok {
256+
tc.SetKeepAlive(true)
257+
tc.SetKeepAlivePeriod(defaultKeepAlivePeriod)
258+
}
259+
return c, nil
258260
}

0 commit comments

Comments
 (0)