From 2c588bc5edf38e0e0627ccaf5f23856b7bdb1ee5 Mon Sep 17 00:00:00 2001 From: Sean Sullivan Date: Fri, 19 Jul 2024 12:04:41 -0700 Subject: [PATCH] Falls back to SPDY for gorilla/websocket https proxy error Kubernetes-commit: 9d560540c5268e0e2aebf5306907494cf522c260 --- pkg/cmd/attach/attach.go | 4 +++- pkg/cmd/exec/exec.go | 4 +++- pkg/cmd/portforward/portforward.go | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/cmd/attach/attach.go b/pkg/cmd/attach/attach.go index c1e8d83dc..b38760a1c 100644 --- a/pkg/cmd/attach/attach.go +++ b/pkg/cmd/attach/attach.go @@ -184,7 +184,9 @@ func createExecutor(url *url.URL, config *restclient.Config) (remotecommand.Exec if err != nil { return nil, err } - exec, err = remotecommand.NewFallbackExecutor(websocketExec, exec, httpstream.IsUpgradeFailure) + exec, err = remotecommand.NewFallbackExecutor(websocketExec, exec, func(err error) bool { + return httpstream.IsUpgradeFailure(err) || httpstream.IsHTTPSProxyError(err) + }) if err != nil { return nil, err } diff --git a/pkg/cmd/exec/exec.go b/pkg/cmd/exec/exec.go index 4bd0c055e..c008c5b43 100644 --- a/pkg/cmd/exec/exec.go +++ b/pkg/cmd/exec/exec.go @@ -147,7 +147,9 @@ func createExecutor(url *url.URL, config *restclient.Config) (remotecommand.Exec if err != nil { return nil, err } - exec, err = remotecommand.NewFallbackExecutor(websocketExec, exec, httpstream.IsUpgradeFailure) + exec, err = remotecommand.NewFallbackExecutor(websocketExec, exec, func(err error) bool { + return httpstream.IsUpgradeFailure(err) || httpstream.IsHTTPSProxyError(err) + }) if err != nil { return nil, err } diff --git a/pkg/cmd/portforward/portforward.go b/pkg/cmd/portforward/portforward.go index 54e955b0c..aa6ee3b92 100644 --- a/pkg/cmd/portforward/portforward.go +++ b/pkg/cmd/portforward/portforward.go @@ -148,7 +148,9 @@ func createDialer(method string, url *url.URL, opts PortForwardOptions) (httpstr return nil, err } // First attempt tunneling (websocket) dialer, then fallback to spdy dialer. - dialer = portforward.NewFallbackDialer(tunnelingDialer, dialer, httpstream.IsUpgradeFailure) + dialer = portforward.NewFallbackDialer(tunnelingDialer, dialer, func(err error) bool { + return httpstream.IsUpgradeFailure(err) || httpstream.IsHTTPSProxyError(err) + }) } return dialer, nil }