From 3c458b7450822e8b58b7ec7042074b19886ff938 Mon Sep 17 00:00:00 2001 From: hongming Date: Fri, 6 Sep 2024 17:05:41 +0800 Subject: [PATCH] fix chunked encoding API no response (#6157) --- pkg/apiserver/auditing/client.go | 10 +++++++++- pkg/apiserver/filters/filters.go | 13 +++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) 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) {