[BUG] http: memory leak with captures when using keep-alive

Hank A. Paulson reported a massive memory leak when using keep-alive
mode. The information he provided made it easy to find that captured
request and response headers were erased but not released when renewing
a request.
This commit is contained in:
Willy Tarreau 2010-01-07 13:35:21 +01:00
parent 260a3bb17b
commit 6fe60182aa

View File

@ -6310,11 +6310,19 @@ void http_init_txn(struct session *s)
if (fe->options2 & PR_O2_REQBUG_OK)
txn->req.err_pos = -1; /* let buggy requests pass */
if (txn->req.cap)
if (txn->req.cap) {
struct cap_hdr *h;
for (h = fe->req_cap; h; h = h->next)
pool_free2(h->pool, txn->req.cap[h->index]);
memset(txn->req.cap, 0, fe->nb_req_cap * sizeof(void *));
}
if (txn->rsp.cap)
if (txn->rsp.cap) {
struct cap_hdr *h;
for (h = fe->rsp_cap; h; h = h->next)
pool_free2(h->pool, txn->rsp.cap[h->index]);
memset(txn->rsp.cap, 0, fe->nb_rsp_cap * sizeof(void *));
}
if (txn->hdr_idx.v)
hdr_idx_init(&txn->hdr_idx);