Commit 5633d759 authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #46854 from CaoShuFeng/jijacker

Automatic merge from submit-queue (batch tested with PRs 46897, 46899, 46864, 46854, 46875) [advanced audit] fix invalid status code for hijacker Fixes #47035 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. Part of https://github.com/kubernetes/features/issues/22
parents f04a7742 541935b1
...@@ -177,7 +177,7 @@ func (a *auditResponseWriter) processCode(code int) { ...@@ -177,7 +177,7 @@ func (a *auditResponseWriter) processCode(code int) {
} }
func (a *auditResponseWriter) Write(bs []byte) (int, error) { 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) return a.ResponseWriter.Write(bs)
} }
...@@ -202,6 +202,8 @@ func (f *fancyResponseWriterDelegator) Flush() { ...@@ -202,6 +202,8 @@ func (f *fancyResponseWriterDelegator) Flush() {
} }
func (f *fancyResponseWriterDelegator) Hijack() (net.Conn, *bufio.ReadWriter, error) { 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() return f.ResponseWriter.(http.Hijacker).Hijack()
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment