From: Willy Tarreau Date: Fri, 3 Apr 2015 20:55:33 +0000 (+0200) Subject: MINOR: http: create a dedicated pool for http_txn X-Git-Tag: v1.6-dev2~268 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=63986c72c88f0d5b44f338d734c6f0f91509d187;p=thirdparty%2Fhaproxy.git MINOR: http: create a dedicated pool for http_txn This one will not necessarily be allocated for each stream, and we want to use the fact that it equals null to know it's not present so that we can always deduce its presence from the stream pointer. This commit only creates the new pool. --- diff --git a/src/haproxy.c b/src/haproxy.c index 4510375d36..b2f3e367aa 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1443,6 +1443,7 @@ void deinit(void) pool_destroy2(pool2_pendconn); pool_destroy2(pool2_sig_handlers); pool_destroy2(pool2_hdr_idx); + pool_destroy2(pool2_http_txn); if (have_appsession) { pool_destroy2(apools.serverid); diff --git a/src/proto_http.c b/src/proto_http.c index fac05b77d1..8bd6b5ef54 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -326,6 +326,7 @@ void init_proto_http() FD_SET(0x7f, http_encode_map); /* memory allocations */ + pool2_http_txn = create_pool("http_txn", sizeof(struct http_txn), MEM_F_SHARED); pool2_requri = create_pool("requri", REQURI_LEN, MEM_F_SHARED); pool2_uniqueid = create_pool("uniqueid", UNIQUEID_LEN, MEM_F_SHARED); } @@ -1087,6 +1088,7 @@ void http_return_srv_error(struct stream *s, struct stream_interface *si) extern const char sess_term_cond[8]; extern const char sess_fin_state[8]; extern const char *monthname[12]; +struct pool_head *pool2_http_txn; struct pool_head *pool2_requri; struct pool_head *pool2_capture = NULL; struct pool_head *pool2_uniqueid; diff --git a/src/stream.c b/src/stream.c index d28684ead0..cd0f8bd9e7 100644 --- a/src/stream.c +++ b/src/stream.c @@ -680,6 +680,7 @@ static void stream_free(struct stream *s) /* We may want to free the maximum amount of pools if the proxy is stopping */ if (fe && unlikely(fe->state == PR_STSTOPPED)) { pool_flush2(pool2_buffer); + pool_flush2(pool2_http_txn); pool_flush2(pool2_hdr_idx); pool_flush2(pool2_requri); pool_flush2(pool2_capture);