diff --git a/pkg/apiserver/auditing/client.go b/pkg/apiserver/auditing/client.go index cafdec338..b3ae5a93e 100644 --- a/pkg/apiserver/auditing/client.go +++ b/pkg/apiserver/auditing/client.go @@ -420,7 +420,15 @@ func (c *ResponseCapture) Header() http.Header { func (c *ResponseCapture) Write(data []byte) (int, error) { c.WriteHeader(http.StatusOK) c.body.Write(data) - return c.ResponseWriter.Write(data) + + n, err := c.ResponseWriter.Write(data) + if err != nil { + return n, err + } + if flusher, ok := c.ResponseWriter.(http.Flusher); ok { + flusher.Flush() + } + return n, nil } func (c *ResponseCapture) WriteHeader(statusCode int) { diff --git a/pkg/apiserver/filters/filters.go b/pkg/apiserver/filters/filters.go index 2a7e3954f..a0499820a 100644 --- a/pkg/apiserver/filters/filters.go +++ b/pkg/apiserver/filters/filters.go @@ -22,7 +22,6 @@ import ( type metaResponseWriter struct { http.ResponseWriter - statusCode int size int } @@ -39,10 +38,20 @@ func (r *metaResponseWriter) WriteHeader(code int) { r.ResponseWriter.WriteHeader(code) } +func (r *metaResponseWriter) Header() http.Header { + return r.ResponseWriter.Header() +} + func (r *metaResponseWriter) Write(b []byte) (int, error) { size, err := r.ResponseWriter.Write(b) r.size += size - return size, err + if err != nil { + return size, err + } + if flusher, ok := r.ResponseWriter.(http.Flusher); ok { + flusher.Flush() + } + return size, nil } func (r *metaResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {