mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-14 06:15:45 +00:00
make spdy.roundtripper usable with UpgradeAwareProxyHandler
This commit is contained in:
parent
868f6e1c5c
commit
024f4ecd98
@ -72,6 +72,11 @@ func NewSpdyRoundTripper(tlsConfig *tls.Config) *SpdyRoundTripper {
|
|||||||
return &SpdyRoundTripper{tlsConfig: tlsConfig}
|
return &SpdyRoundTripper{tlsConfig: tlsConfig}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// implements pkg/util/net.TLSClientConfigHolder for proper TLS checking during proxying with a spdy roundtripper
|
||||||
|
func (s *SpdyRoundTripper) TLSClientConfig() *tls.Config {
|
||||||
|
return s.tlsConfig
|
||||||
|
}
|
||||||
|
|
||||||
// dial dials the host specified by req, using TLS if appropriate, optionally
|
// dial dials the host specified by req, using TLS if appropriate, optionally
|
||||||
// using a proxy server if one is configured via environment variables.
|
// using a proxy server if one is configured via environment variables.
|
||||||
func (s *SpdyRoundTripper) dial(req *http.Request) (net.Conn, error) {
|
func (s *SpdyRoundTripper) dial(req *http.Request) (net.Conn, error) {
|
||||||
|
@ -138,6 +138,10 @@ func CloneTLSConfig(cfg *tls.Config) *tls.Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type TLSClientConfigHolder interface {
|
||||||
|
TLSClientConfig() *tls.Config
|
||||||
|
}
|
||||||
|
|
||||||
func TLSClientConfig(transport http.RoundTripper) (*tls.Config, error) {
|
func TLSClientConfig(transport http.RoundTripper) (*tls.Config, error) {
|
||||||
if transport == nil {
|
if transport == nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
@ -146,6 +150,8 @@ func TLSClientConfig(transport http.RoundTripper) (*tls.Config, error) {
|
|||||||
switch transport := transport.(type) {
|
switch transport := transport.(type) {
|
||||||
case *http.Transport:
|
case *http.Transport:
|
||||||
return transport.TLSClientConfig, nil
|
return transport.TLSClientConfig, nil
|
||||||
|
case TLSClientConfigHolder:
|
||||||
|
return transport.TLSClientConfig(), nil
|
||||||
case RoundTripperWrapper:
|
case RoundTripperWrapper:
|
||||||
return TLSClientConfig(transport.WrappedRoundTripper())
|
return TLSClientConfig(transport.WrappedRoundTripper())
|
||||||
default:
|
default:
|
||||||
|
@ -218,3 +218,24 @@ func TestProxierWithNoProxyCIDR(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type fakeTLSClientConfigHolder struct {
|
||||||
|
called bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeTLSClientConfigHolder) TLSClientConfig() *tls.Config {
|
||||||
|
f.called = true
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (f *fakeTLSClientConfigHolder) RoundTrip(*http.Request) (*http.Response, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTLSClientConfigHolder(t *testing.T) {
|
||||||
|
rt := &fakeTLSClientConfigHolder{}
|
||||||
|
TLSClientConfig(rt)
|
||||||
|
|
||||||
|
if !rt.called {
|
||||||
|
t.Errorf("didn't find tls config")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user