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 c27ed8a..9272a6f 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -171,6 +171,7 @@
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 @@
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;