From 541935b13f87e55199840a73cd3f158e7f0d7b63 Mon Sep 17 00:00:00 2001 From: Cao Shufeng Date: Fri, 2 Jun 2017 20:03:49 +0800 Subject: [PATCH] fix invalid status code for hijacker When using hijacker to take over the connection, the http status code should be 101 not 200. PS: Use "kubectl exec" as an example to review this change. --- staging/src/k8s.io/apiserver/pkg/endpoints/filters/audit.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/filters/audit.go b/staging/src/k8s.io/apiserver/pkg/endpoints/filters/audit.go index 02b32a00745..bd090c577a3 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/filters/audit.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/filters/audit.go @@ -183,7 +183,7 @@ func (a *auditResponseWriter) processCode(code int) { } func (a *auditResponseWriter) Write(bs []byte) (int, error) { - a.processCode(200) // the Go library calls WriteHeader internally if no code was written yet. But this will go unnoticed for us + a.processCode(http.StatusOK) // the Go library calls WriteHeader internally if no code was written yet. But this will go unnoticed for us return a.ResponseWriter.Write(bs) } @@ -208,6 +208,8 @@ func (f *fancyResponseWriterDelegator) Flush() { } func (f *fancyResponseWriterDelegator) Hijack() (net.Conn, *bufio.ReadWriter, error) { + // fake a response status before protocol switch happens + f.processCode(http.StatusSwitchingProtocols) return f.ResponseWriter.(http.Hijacker).Hijack() }