From 273e964f6e5d5f62f7e556a61b153d4f739394f0 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 16 Dec 2018 00:35:15 +0100 Subject: [PATCH] BUG/MEDIUM: htx/cache: use the correct class of error codes on abort The HTX-specific cache code uses HTX_CACHE_* states which overlap with the legacy HTTP states. A typo in the error handling made the state become HTTP_CACHE_END, which equals 3 and is the value for HTX_CACHE_EOD, which explains why we were seeing a transition to trailers and memory corruption. no backport needed. --- src/cache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cache.c b/src/cache.c index 0d67840ad..c3d44f5db 100644 --- a/src/cache.c +++ b/src/cache.c @@ -962,7 +962,7 @@ static void htx_cache_io_handler(struct appctx *appctx) } if (res->flags & (CF_SHUTW|CF_SHUTW_NOW)) - appctx->st0 = HTTP_CACHE_END; + appctx->st0 = HTX_CACHE_END; if (appctx->st0 == HTX_CACHE_INIT) { appctx->ctx.cache.next = block_ptr(cache_ptr);