]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: proto_http: replace generic opaque types by real used types in "http_capture...
authorThierry FOURNIER <tfournier@arpalert.org>
Fri, 31 Jul 2015 06:56:35 +0000 (08:56 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 20 Aug 2015 15:13:46 +0000 (17:13 +0200)
This patch removes the generic opaque type for storing the configuration of the
action "http_capture" by id.

include/types/action.h
src/proto_http.c

index d3781cfbe71d7c89a83b6d718124ff8562970db9..5cfcb576b2ae1572b610bc7cf25537632994967a 100644 (file)
@@ -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;
index f0ad1c29edb196c14f95848dce897639d07d03b4..5214d873d96277387859650808ac793776ee7e2d 100644 (file)
@@ -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;