From e1533f5790a3d6810250b278faa1ac7708b4fcae Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Tue, 14 Nov 2017 14:39:24 +0100 Subject: [PATCH] MINOR: cache: disable cache if shctx_row_data_append fail Disable the cache if the append of data failed, it should never happen because the allocated row size is at least equal to the size of the object to allocate. --- src/cache.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/cache.c b/src/cache.c index c27ed8a55..9272a6fbe 100644 --- a/src/cache.c +++ b/src/cache.c @@ -171,6 +171,7 @@ cache_store_http_forward_data(struct stream *s, struct filter *filter, if (filter->ctx && st->first_block) { /* disable buffering if too much data (never greater than a buffer size */ if (len - st->hdrs_len > global.tune.bufsize - global.tune.maxrewrite - st->first_block->len) { + disable_cache: filter->ctx = NULL; /* disable cache */ shctx_lock(shctx); shctx_row_dec_hot(shctx, st->first_block); @@ -185,6 +186,8 @@ cache_store_http_forward_data(struct stream *s, struct filter *filter, MIN(bi_contig_data(msg->chn->buf), len - st->hdrs_len)); /* Rewind the buffer to forward all data */ b_rew(msg->chn->buf, st->hdrs_len); + if (ret) + goto disable_cache; } } ret = len;