From 0de771fd040e2bbab1b695f4bdf271087358c0da Mon Sep 17 00:00:00 2001 From: Weidi Deng Date: Thu, 23 Nov 2023 10:17:49 +0800 Subject: [PATCH] panic when reading from backend failed to propagate stream error --- modules/caddyhttp/reverseproxy/reverseproxy.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/caddyhttp/reverseproxy/reverseproxy.go b/modules/caddyhttp/reverseproxy/reverseproxy.go index 08be40d62d0..1a76aef4c5b 100644 --- a/modules/caddyhttp/reverseproxy/reverseproxy.go +++ b/modules/caddyhttp/reverseproxy/reverseproxy.go @@ -962,10 +962,12 @@ func (h *Handler) finalizeResponse( if err != nil { // we're streaming the response and we've already written headers, so // there's nothing an error handler can do to recover at this point; - // the standard lib's proxy panics at this point, but we'll just log - // the error and abort the stream here + // we'll just log the error and abort the stream here and panic just as + // the standard lib's proxy to propagate the stream error. + // see issue https://github.com/caddyserver/caddy/issues/5951 logger.Error("aborting with incomplete response", zap.Error(err)) - return nil + // no extra logging from stdlib + panic(http.ErrAbortHandler) } if len(res.Trailer) > 0 {