struct cap_hdr *rsp_cap; /* chained list of response headers to be captured */
struct pool_head *req_cap_pool, /* pools of pre-allocated char ** used to build the sessions */
*rsp_cap_pool;
- void *hdr_idx_pool; /* pools of pre-allocated int* used for headers indexing */
+ struct pool_head *hdr_idx_pool; /* pools of pre-allocated int* used for headers indexing */
char *req_add[MAX_NEWHDR], *rsp_add[MAX_NEWHDR]; /* headers to be added */
int grace; /* grace time after stop request */
char *check_req; /* HTTP or SSL request to use for PR_O_HTTP_CHK|PR_O_SSL3_CHK */
curproxy->nb_rsp_cap * sizeof(char *),
MEM_F_SHARED);
+ curproxy->hdr_idx_pool = create_pool("hdr_idx",
+ MAX_HTTP_HDR * sizeof(struct hdr_idx_elem),
+ MEM_F_SHARED);
+
/* for backwards compatibility with "listen" instances, if
* fullconn is not set but maxconn is set, then maxconn
* is used.
txn->req.som = txn->req.eoh = 0; /* relative to the buffer */
txn->auth_hdr.len = -1;
- txn->hdr_idx.size = MAX_HTTP_HDR;
-
if (p->nb_req_cap > 0) {
if ((txn->req.cap = pool_alloc2(p->req_cap_pool)) == NULL) {
/* no memory */
}
- if ((txn->hdr_idx.v =
- pool_alloc_from(p->hdr_idx_pool, txn->hdr_idx.size*sizeof(*txn->hdr_idx.v)))
- == NULL) { /* no memory */
+ txn->hdr_idx.size = MAX_HTTP_HDR;
+
+ if ((txn->hdr_idx.v = pool_alloc2(p->hdr_idx_pool)) == NULL) {
+ /* no memory */
if (txn->rsp.cap != NULL)
pool_free2(p->rsp_cap_pool, txn->rsp.cap);
if (txn->req.cap != NULL)
if ((s->req = pool_alloc2(pool2_buffer)) == NULL) { /* no memory */
if (txn->hdr_idx.v != NULL)
- pool_free_to(p->hdr_idx_pool, txn->hdr_idx.v);
+ pool_free2(p->hdr_idx_pool, txn->hdr_idx.v);
if (txn->rsp.cap != NULL)
pool_free2(p->rsp_cap_pool, txn->rsp.cap);
if (txn->req.cap != NULL)
if ((s->rep = pool_alloc2(pool2_buffer)) == NULL) { /* no memory */
pool_free2(pool2_buffer, s->req);
if (txn->hdr_idx.v != NULL)
- pool_free_to(p->hdr_idx_pool, txn->hdr_idx.v);
+ pool_free2(p->hdr_idx_pool, txn->hdr_idx.v);
if (txn->rsp.cap != NULL)
pool_free2(p->rsp_cap_pool, txn->rsp.cap);
if (txn->req.cap != NULL)
pool_free2(pool2_buffer, s->rep);
if (txn->hdr_idx.v != NULL)
- pool_free_to(s->fe->hdr_idx_pool, txn->hdr_idx.v);
+ pool_free2(s->fe->hdr_idx_pool, txn->hdr_idx.v);
if (txn->rsp.cap != NULL) {
struct cap_hdr *h;