MINOR: compression: Use a memory pool to allocate compression states
Instead of doing a malloc/free to each HTTP transaction to allocate the
compression state (when the HTTP compression is enabled), we use a memory pool.
diff --git a/src/flt_http_comp.c b/src/flt_http_comp.c
index 54ffeed..64c669d 100644
--- a/src/flt_http_comp.c
+++ b/src/flt_http_comp.c
@@ -32,6 +32,10 @@
struct flt_ops comp_ops;
+
+/* Pools used to allocate comp_state structs */
+static struct pool_head *pool2_comp_state = NULL;
+
static struct buffer *tmpbuf = &buf_empty;
static struct buffer *zbuf = &buf_empty;
@@ -87,7 +91,8 @@
if (filter->ctx == NULL) {
struct comp_state *st;
- if (!(st = malloc(sizeof(*st))))
+ st = pool_alloc_dirty(pool2_comp_state);
+ if (st == NULL)
return -1;
st->comp_algo = NULL;
@@ -113,7 +118,7 @@
/* release any possible compression context */
if (st->comp_algo)
st->comp_algo->end(&st->comp_ctx);
- free(st);
+ pool_free2(pool2_comp_state, st);
filter->ctx = NULL;
end:
return 1;
@@ -966,4 +971,5 @@
cfg_register_keywords(&cfg_kws);
flt_register_keywords(&filter_kws);
sample_register_fetches(&sample_fetch_keywords);
+ pool2_comp_state = create_pool("comp_state", sizeof(struct comp_state), MEM_F_SHARED);
}