servers/http/http.go
func (s *Server) ServeTCP(ln net.Listener) (err error) {
	if l, ok := ln.(*net.TCPListener); ok {
		ln = tcpKeepAliveListener{TCPListener: l}
	}
	if s.TLSConfig != nil {
		ln = tls.NewListener(ln, s.TLSConfig)
	}

	err = s.Server.Serve(ln)
	if err == http.ErrServerClosed {
		return nil
	}
	return
}
func (s *Server) ServeTCP(ln net.Listener) (err error) {
	if l, ok := ln.(*net.TCPListener); ok {
		ln = tcpKeepAliveListener{TCPListener: l}
	}
	if s.TLSConfig != nil {
		ln = tls.NewListener(ln, s.TLSConfig)
	}

	err = s.Server.Serve(ln)
	if err == http.ErrServerClosed {
		return nil
	}
	return
}
// ServeTCP executes http.Server.Serve method.
// If the provided listener is net.TCPListener, keep alive
// will be enabled. If server is configured with TLS,
// a tls.Listener will be created with provided listener.