mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 15:58:37 +00:00
Read error from failed upgrade attempts
This commit is contained in:
parent
95bdf1923c
commit
ddae749111
@ -130,10 +130,6 @@ func (e *streamExecutor) Dial(protocols ...string) (httpstream.Connection, strin
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
if resp.StatusCode != http.StatusSwitchingProtocols {
|
|
||||||
return nil, "", fmt.Errorf("unexpected response status code %d (%s)", resp.StatusCode, http.StatusText(resp.StatusCode))
|
|
||||||
}
|
|
||||||
|
|
||||||
conn, err := e.upgrader.NewConnection(resp)
|
conn, err := e.upgrader.NewConnection(resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, "", err
|
return nil, "", err
|
||||||
|
@ -205,7 +205,7 @@ func (s *SpdyRoundTripper) RoundTrip(req *http.Request) (*http.Response, error)
|
|||||||
func (s *SpdyRoundTripper) NewConnection(resp *http.Response) (httpstream.Connection, error) {
|
func (s *SpdyRoundTripper) NewConnection(resp *http.Response) (httpstream.Connection, error) {
|
||||||
connectionHeader := strings.ToLower(resp.Header.Get(httpstream.HeaderConnection))
|
connectionHeader := strings.ToLower(resp.Header.Get(httpstream.HeaderConnection))
|
||||||
upgradeHeader := strings.ToLower(resp.Header.Get(httpstream.HeaderUpgrade))
|
upgradeHeader := strings.ToLower(resp.Header.Get(httpstream.HeaderUpgrade))
|
||||||
if !strings.Contains(connectionHeader, strings.ToLower(httpstream.HeaderUpgrade)) || !strings.Contains(upgradeHeader, strings.ToLower(HeaderSpdy31)) {
|
if (resp.StatusCode != http.StatusSwitchingProtocols) || !strings.Contains(connectionHeader, strings.ToLower(httpstream.HeaderUpgrade)) || !strings.Contains(upgradeHeader, strings.ToLower(HeaderSpdy31)) {
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
responseError := ""
|
responseError := ""
|
||||||
responseErrorBytes, err := ioutil.ReadAll(resp.Body)
|
responseErrorBytes, err := ioutil.ReadAll(resp.Body)
|
||||||
|
@ -39,30 +39,42 @@ func TestRoundTripAndNewConnection(t *testing.T) {
|
|||||||
clientTLS *tls.Config
|
clientTLS *tls.Config
|
||||||
serverConnectionHeader string
|
serverConnectionHeader string
|
||||||
serverUpgradeHeader string
|
serverUpgradeHeader string
|
||||||
|
serverStatusCode int
|
||||||
shouldError bool
|
shouldError bool
|
||||||
}{
|
}{
|
||||||
"no headers": {
|
"no headers": {
|
||||||
serverFunc: httptest.NewServer,
|
serverFunc: httptest.NewServer,
|
||||||
serverConnectionHeader: "",
|
serverConnectionHeader: "",
|
||||||
serverUpgradeHeader: "",
|
serverUpgradeHeader: "",
|
||||||
|
serverStatusCode: http.StatusSwitchingProtocols,
|
||||||
shouldError: true,
|
shouldError: true,
|
||||||
},
|
},
|
||||||
"no upgrade header": {
|
"no upgrade header": {
|
||||||
serverFunc: httptest.NewServer,
|
serverFunc: httptest.NewServer,
|
||||||
serverConnectionHeader: "Upgrade",
|
serverConnectionHeader: "Upgrade",
|
||||||
serverUpgradeHeader: "",
|
serverUpgradeHeader: "",
|
||||||
|
serverStatusCode: http.StatusSwitchingProtocols,
|
||||||
shouldError: true,
|
shouldError: true,
|
||||||
},
|
},
|
||||||
"no connection header": {
|
"no connection header": {
|
||||||
serverFunc: httptest.NewServer,
|
serverFunc: httptest.NewServer,
|
||||||
serverConnectionHeader: "",
|
serverConnectionHeader: "",
|
||||||
serverUpgradeHeader: "SPDY/3.1",
|
serverUpgradeHeader: "SPDY/3.1",
|
||||||
|
serverStatusCode: http.StatusSwitchingProtocols,
|
||||||
|
shouldError: true,
|
||||||
|
},
|
||||||
|
"no switching protocol status code": {
|
||||||
|
serverFunc: httptest.NewServer,
|
||||||
|
serverConnectionHeader: "Upgrade",
|
||||||
|
serverUpgradeHeader: "SPDY/3.1",
|
||||||
|
serverStatusCode: http.StatusForbidden,
|
||||||
shouldError: true,
|
shouldError: true,
|
||||||
},
|
},
|
||||||
"http": {
|
"http": {
|
||||||
serverFunc: httptest.NewServer,
|
serverFunc: httptest.NewServer,
|
||||||
serverConnectionHeader: "Upgrade",
|
serverConnectionHeader: "Upgrade",
|
||||||
serverUpgradeHeader: "SPDY/3.1",
|
serverUpgradeHeader: "SPDY/3.1",
|
||||||
|
serverStatusCode: http.StatusSwitchingProtocols,
|
||||||
shouldError: false,
|
shouldError: false,
|
||||||
},
|
},
|
||||||
"https (invalid hostname + InsecureSkipVerify)": {
|
"https (invalid hostname + InsecureSkipVerify)": {
|
||||||
@ -81,6 +93,7 @@ func TestRoundTripAndNewConnection(t *testing.T) {
|
|||||||
clientTLS: &tls.Config{InsecureSkipVerify: true},
|
clientTLS: &tls.Config{InsecureSkipVerify: true},
|
||||||
serverConnectionHeader: "Upgrade",
|
serverConnectionHeader: "Upgrade",
|
||||||
serverUpgradeHeader: "SPDY/3.1",
|
serverUpgradeHeader: "SPDY/3.1",
|
||||||
|
serverStatusCode: http.StatusSwitchingProtocols,
|
||||||
shouldError: false,
|
shouldError: false,
|
||||||
},
|
},
|
||||||
"https (valid hostname + RootCAs)": {
|
"https (valid hostname + RootCAs)": {
|
||||||
@ -99,6 +112,7 @@ func TestRoundTripAndNewConnection(t *testing.T) {
|
|||||||
clientTLS: &tls.Config{RootCAs: localhostPool},
|
clientTLS: &tls.Config{RootCAs: localhostPool},
|
||||||
serverConnectionHeader: "Upgrade",
|
serverConnectionHeader: "Upgrade",
|
||||||
serverUpgradeHeader: "SPDY/3.1",
|
serverUpgradeHeader: "SPDY/3.1",
|
||||||
|
serverStatusCode: http.StatusSwitchingProtocols,
|
||||||
shouldError: false,
|
shouldError: false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -112,7 +126,7 @@ func TestRoundTripAndNewConnection(t *testing.T) {
|
|||||||
|
|
||||||
w.Header().Set(httpstream.HeaderConnection, testCase.serverConnectionHeader)
|
w.Header().Set(httpstream.HeaderConnection, testCase.serverConnectionHeader)
|
||||||
w.Header().Set(httpstream.HeaderUpgrade, testCase.serverUpgradeHeader)
|
w.Header().Set(httpstream.HeaderUpgrade, testCase.serverUpgradeHeader)
|
||||||
w.WriteHeader(http.StatusSwitchingProtocols)
|
w.WriteHeader(testCase.serverStatusCode)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user