From f70a7578faa1ab9169bc05a121911bf33d7d3da3 Mon Sep 17 00:00:00 2001 From: Francis Lavoie Date: Mon, 23 Aug 2021 13:54:28 -0400 Subject: [PATCH] reverseproxy: Remove redundant flushing (#4299) From reading through the code, I think this code path is now obsoleted by the changes made in https://github.com/caddyserver/caddy/pull/4266. Basically, `h.flushInterval()` will set the flush interval to `-1` if we're in a bi-directional stream, and the recent PR ensured that `h.copyResponse()` properly flushes headers immediately when the flush interval is non-zero. So now there should be no need to call Flush before calling `h.copyResponse()`. --- modules/caddyhttp/reverseproxy/reverseproxy.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/modules/caddyhttp/reverseproxy/reverseproxy.go b/modules/caddyhttp/reverseproxy/reverseproxy.go index 633cc657..671ea044 100644 --- a/modules/caddyhttp/reverseproxy/reverseproxy.go +++ b/modules/caddyhttp/reverseproxy/reverseproxy.go @@ -691,15 +691,6 @@ func (h *Handler) reverseProxy(rw http.ResponseWriter, req *http.Request, repl * } rw.WriteHeader(res.StatusCode) - - // some apps need the response headers before starting to stream content with http2, - // so it's important to explicitly flush the headers to the client before streaming the data. - // (see https://github.com/caddyserver/caddy/issues/3556 for use case and nuances) - if h.isBidirectionalStream(req, res) { - if wf, ok := rw.(http.Flusher); ok { - wf.Flush() - } - } err = h.copyResponse(rw, res.Body, h.flushInterval(req, res)) res.Body.Close() // close now, instead of defer, to populate res.Trailer if err != nil {