MEDIUM: http: move header captures from http_txn to struct stream
The header captures are now general purpose captures since tcp rules
can use them to capture various contents. That removes a dependency
on http_txn that appeared in some sample fetch functions and in the
order by which captures and http_txn were allocated.
Interestingly the reset of the header captures were done at too many
places as http_init_txn() used to do it while it was done previously
in every call place.
diff --git a/src/frontend.c b/src/frontend.c
index caf0fc2..3a71bc4 100644
--- a/src/frontend.c
+++ b/src/frontend.c
@@ -111,15 +111,15 @@
setsockopt(cfd, SOL_SOCKET, SO_RCVBUF, &global.tune.client_rcvbuf, sizeof(global.tune.client_rcvbuf));
if (unlikely(fe->nb_req_cap > 0)) {
- if ((s->txn.req.cap = pool_alloc2(fe->req_cap_pool)) == NULL)
+ if ((s->req_cap = pool_alloc2(fe->req_cap_pool)) == NULL)
goto out_return; /* no memory */
- memset(s->txn.req.cap, 0, fe->nb_req_cap * sizeof(void *));
+ memset(s->req_cap, 0, fe->nb_req_cap * sizeof(void *));
}
if (unlikely(fe->nb_rsp_cap > 0)) {
- if ((s->txn.rsp.cap = pool_alloc2(fe->rsp_cap_pool)) == NULL)
+ if ((s->res_cap = pool_alloc2(fe->rsp_cap_pool)) == NULL)
goto out_free_reqcap; /* no memory */
- memset(s->txn.rsp.cap, 0, fe->nb_rsp_cap * sizeof(void *));
+ memset(s->res_cap, 0, fe->nb_rsp_cap * sizeof(void *));
}
if (fe->http_needed) {
@@ -209,9 +209,9 @@
/* Error unrolling */
out_free_rspcap:
- pool_free2(fe->rsp_cap_pool, s->txn.rsp.cap);
+ pool_free2(fe->rsp_cap_pool, s->res_cap);
out_free_reqcap:
- pool_free2(fe->req_cap_pool, s->txn.req.cap);
+ pool_free2(fe->req_cap_pool, s->req_cap);
out_return:
return -1;
}