From 69d4f885adf4b83f84e7be2ac76da45bfa89bef4 Mon Sep 17 00:00:00 2001 From: Yin Da Date: Wed, 1 Mar 2023 14:23:24 +0800 Subject: [PATCH] Feat: support hijacker for proxy resp writer Signed-off-by: Yin Da --- pkg/apis/cluster/v1alpha1/clustergateway_proxy.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/apis/cluster/v1alpha1/clustergateway_proxy.go b/pkg/apis/cluster/v1alpha1/clustergateway_proxy.go index 62670b77..0c5786ae 100644 --- a/pkg/apis/cluster/v1alpha1/clustergateway_proxy.go +++ b/pkg/apis/cluster/v1alpha1/clustergateway_proxy.go @@ -202,6 +202,8 @@ var ( type proxyResponseWriter struct { http.ResponseWriter + http.Hijacker + http.Flusher statusCode int } @@ -210,8 +212,15 @@ func (in *proxyResponseWriter) WriteHeader(statusCode int) { in.ResponseWriter.WriteHeader(statusCode) } +func newProxyResponseWriter(_writer http.ResponseWriter) *proxyResponseWriter { + writer := &proxyResponseWriter{ResponseWriter: _writer, statusCode: http.StatusOK} + writer.Hijacker, _ = _writer.(http.Hijacker) + writer.Flusher, _ = _writer.(http.Flusher) + return writer +} + func (p *proxyHandler) ServeHTTP(_writer http.ResponseWriter, request *http.Request) { - writer := &proxyResponseWriter{_writer, http.StatusOK} + writer := newProxyResponseWriter(_writer) defer func() { p.finishFunc(writer.statusCode) }()