From: William Lallemand Date: Tue, 14 Nov 2017 13:39:24 +0000 (+0100) Subject: MINOR: cache: disable cache if shctx_row_data_append fail X-Git-Tag: v1.8-rc4~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e1533f5790a3d6810250b278faa1ac7708b4fcae;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/cache.c b/src/cache.c index c27ed8a557..9272a6fbe3 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;