mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 23:27:04 +02:00
[MAJOR] convert the header indexes to use mempool v2
This commit is contained in:
parent
cf7f320f9d
commit
1d4154a7c0
@ -142,7 +142,7 @@ struct proxy {
|
|||||||
struct cap_hdr *rsp_cap; /* chained list of response headers to be captured */
|
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 */
|
struct pool_head *req_cap_pool, /* pools of pre-allocated char ** used to build the sessions */
|
||||||
*rsp_cap_pool;
|
*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 */
|
char *req_add[MAX_NEWHDR], *rsp_add[MAX_NEWHDR]; /* headers to be added */
|
||||||
int grace; /* grace time after stop request */
|
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 */
|
char *check_req; /* HTTP or SSL request to use for PR_O_HTTP_CHK|PR_O_SSL3_CHK */
|
||||||
|
@ -2413,6 +2413,10 @@ int readcfgfile(const char *file)
|
|||||||
curproxy->nb_rsp_cap * sizeof(char *),
|
curproxy->nb_rsp_cap * sizeof(char *),
|
||||||
MEM_F_SHARED);
|
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
|
/* for backwards compatibility with "listen" instances, if
|
||||||
* fullconn is not set but maxconn is set, then maxconn
|
* fullconn is not set but maxconn is set, then maxconn
|
||||||
* is used.
|
* is used.
|
||||||
|
13
src/client.c
13
src/client.c
@ -230,8 +230,6 @@ int event_accept(int fd) {
|
|||||||
txn->req.som = txn->req.eoh = 0; /* relative to the buffer */
|
txn->req.som = txn->req.eoh = 0; /* relative to the buffer */
|
||||||
txn->auth_hdr.len = -1;
|
txn->auth_hdr.len = -1;
|
||||||
|
|
||||||
txn->hdr_idx.size = MAX_HTTP_HDR;
|
|
||||||
|
|
||||||
if (p->nb_req_cap > 0) {
|
if (p->nb_req_cap > 0) {
|
||||||
if ((txn->req.cap = pool_alloc2(p->req_cap_pool)) == NULL) {
|
if ((txn->req.cap = pool_alloc2(p->req_cap_pool)) == NULL) {
|
||||||
/* no memory */
|
/* no memory */
|
||||||
@ -258,9 +256,10 @@ int event_accept(int fd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ((txn->hdr_idx.v =
|
txn->hdr_idx.size = MAX_HTTP_HDR;
|
||||||
pool_alloc_from(p->hdr_idx_pool, txn->hdr_idx.size*sizeof(*txn->hdr_idx.v)))
|
|
||||||
== NULL) { /* no memory */
|
if ((txn->hdr_idx.v = pool_alloc2(p->hdr_idx_pool)) == NULL) {
|
||||||
|
/* no memory */
|
||||||
if (txn->rsp.cap != NULL)
|
if (txn->rsp.cap != NULL)
|
||||||
pool_free2(p->rsp_cap_pool, txn->rsp.cap);
|
pool_free2(p->rsp_cap_pool, txn->rsp.cap);
|
||||||
if (txn->req.cap != NULL)
|
if (txn->req.cap != NULL)
|
||||||
@ -347,7 +346,7 @@ int event_accept(int fd) {
|
|||||||
|
|
||||||
if ((s->req = pool_alloc2(pool2_buffer)) == NULL) { /* no memory */
|
if ((s->req = pool_alloc2(pool2_buffer)) == NULL) { /* no memory */
|
||||||
if (txn->hdr_idx.v != NULL)
|
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)
|
if (txn->rsp.cap != NULL)
|
||||||
pool_free2(p->rsp_cap_pool, txn->rsp.cap);
|
pool_free2(p->rsp_cap_pool, txn->rsp.cap);
|
||||||
if (txn->req.cap != NULL)
|
if (txn->req.cap != NULL)
|
||||||
@ -370,7 +369,7 @@ int event_accept(int fd) {
|
|||||||
if ((s->rep = pool_alloc2(pool2_buffer)) == NULL) { /* no memory */
|
if ((s->rep = pool_alloc2(pool2_buffer)) == NULL) { /* no memory */
|
||||||
pool_free2(pool2_buffer, s->req);
|
pool_free2(pool2_buffer, s->req);
|
||||||
if (txn->hdr_idx.v != NULL)
|
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)
|
if (txn->rsp.cap != NULL)
|
||||||
pool_free2(p->rsp_cap_pool, txn->rsp.cap);
|
pool_free2(p->rsp_cap_pool, txn->rsp.cap);
|
||||||
if (txn->req.cap != NULL)
|
if (txn->req.cap != NULL)
|
||||||
|
@ -45,7 +45,7 @@ void session_free(struct session *s)
|
|||||||
pool_free2(pool2_buffer, s->rep);
|
pool_free2(pool2_buffer, s->rep);
|
||||||
|
|
||||||
if (txn->hdr_idx.v != NULL)
|
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) {
|
if (txn->rsp.cap != NULL) {
|
||||||
struct cap_hdr *h;
|
struct cap_hdr *h;
|
||||||
|
Loading…
Reference in New Issue
Block a user