From: Tim Duesterhus Date: Thu, 22 Oct 2020 19:15:06 +0000 (+0200) Subject: BUG/MINOR: cache: Check the return value of http_replace_res_status X-Git-Tag: v2.3-dev9~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0142340b243ab0b82dbc40601f992b7f29b298f;p=thirdparty%2Fhaproxy.git BUG/MINOR: cache: Check the return value of http_replace_res_status Send the full body if the status `304` cannot be applied. This should be the most graceful failure. Specific for 2.3, no backport needed. --- diff --git a/src/cache.c b/src/cache.c index a5e26c330d..c8350ff007 100644 --- a/src/cache.c +++ b/src/cache.c @@ -935,8 +935,12 @@ static void http_cache_io_handler(struct appctx *appctx) /* In case of a conditional request, we might want to send a * "304 Not Modified" response instead of the stored data. */ - if (appctx->ctx.cache.send_notmodified) - http_replace_res_status(res_htx, ist("304"), ist("Not Modified")); + if (appctx->ctx.cache.send_notmodified) { + if (!http_replace_res_status(res_htx, ist("304"), ist("Not Modified"))) { + /* If replacing the status code fails we need to send the full response. */ + appctx->ctx.cache.send_notmodified = 0; + } + } /* Skip response body for HEAD requests or in case of "304 Not * Modified" response. */