From: Thierry FOURNIER Date: Fri, 31 Jul 2015 06:56:35 +0000 (+0200) Subject: MINOR: proto_http: replace generic opaque types by real used types in "http_capture... X-Git-Tag: v1.6-dev4~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e209797ef05d13d67fb37f1912cadc358e43fdcd;p=thirdparty%2Fhaproxy.git MINOR: proto_http: replace generic opaque types by real used types in "http_capture" by id This patch removes the generic opaque type for storing the configuration of the action "http_capture" by id. --- diff --git a/include/types/action.h b/include/types/action.h index d3781cfbe7..5cfcb576b2 100644 --- a/include/types/action.h +++ b/include/types/action.h @@ -65,6 +65,10 @@ struct act_rule { struct sample_expr *expr; struct cap_hdr *hdr; } cap; + struct { + struct sample_expr *expr; + int idx; + } capid; struct hlua_rule *hlua_rule; struct { struct sample_expr *expr; diff --git a/src/proto_http.c b/src/proto_http.c index f0ad1c29ed..5214d873d9 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -12352,9 +12352,7 @@ int http_action_req_capture_by_id(struct act_rule *rule, struct proxy *px, struct session *sess, struct stream *s) { struct sample *key; - struct sample_expr *expr = rule->arg.act.p[0]; struct cap_hdr *h; - int idx = (long)rule->arg.act.p[1]; char **cap = s->req_cap; struct proxy *fe = strm_fe(s); int len; @@ -12362,12 +12360,12 @@ int http_action_req_capture_by_id(struct act_rule *rule, struct proxy *px, /* Look for the original configuration. */ for (h = fe->req_cap, i = fe->nb_req_cap - 1; - h != NULL && i != idx ; + h != NULL && i != rule->arg.capid.idx ; i--, h = h->next); if (!h) return 1; - key = sample_fetch_as_type(s->be, sess, s, SMP_OPT_DIR_REQ|SMP_OPT_FINAL, expr, SMP_T_STR); + key = sample_fetch_as_type(s->be, sess, s, SMP_OPT_DIR_REQ|SMP_OPT_FINAL, rule->arg.capid.expr, SMP_T_STR); if (!key) return 1; @@ -12498,8 +12496,8 @@ int parse_http_req_capture(const char **args, int *orig_arg, struct proxy *px, s rule->action = HTTP_REQ_ACT_CUSTOM_CONT; rule->action_ptr = http_action_req_capture_by_id; - rule->arg.act.p[0] = expr; - rule->arg.act.p[1] = (void *)(long)id; + rule->arg.capid.expr = expr; + rule->arg.capid.idx = id; } else { @@ -12521,9 +12519,7 @@ int http_action_res_capture_by_id(struct act_rule *rule, struct proxy *px, struct session *sess, struct stream *s) { struct sample *key; - struct sample_expr *expr = rule->arg.act.p[0]; struct cap_hdr *h; - int idx = (long)rule->arg.act.p[1]; char **cap = s->res_cap; struct proxy *fe = strm_fe(s); int len; @@ -12531,12 +12527,12 @@ int http_action_res_capture_by_id(struct act_rule *rule, struct proxy *px, /* Look for the original configuration. */ for (h = fe->rsp_cap, i = fe->nb_rsp_cap - 1; - h != NULL && i != idx ; + h != NULL && i != rule->arg.capid.idx ; i--, h = h->next); if (!h) return 1; - key = sample_fetch_as_type(s->be, sess, s, SMP_OPT_DIR_RES|SMP_OPT_FINAL, expr, SMP_T_STR); + key = sample_fetch_as_type(s->be, sess, s, SMP_OPT_DIR_RES|SMP_OPT_FINAL, rule->arg.capid.expr, SMP_T_STR); if (!key) return 1; @@ -12622,8 +12618,8 @@ int parse_http_res_capture(const char **args, int *orig_arg, struct proxy *px, s rule->action = HTTP_RES_ACT_CUSTOM_CONT; rule->action_ptr = http_action_res_capture_by_id; - rule->arg.act.p[0] = expr; - rule->arg.act.p[1] = (void *)(long)id; + rule->arg.capid.expr = expr; + rule->arg.capid.idx = id; *orig_arg = cur_arg; return 0;