diff --git a/include/proto/http_rules.h b/include/proto/http_rules.h index 5e03dd813..608ca5760 100644 --- a/include/proto/http_rules.h +++ b/include/proto/http_rules.h @@ -32,8 +32,6 @@ extern struct action_kw_list http_res_keywords; struct act_rule *parse_http_req_cond(const char **args, const char *file, int linenum, struct proxy *proxy); struct act_rule *parse_http_res_cond(const char **args, const char *file, int linenum, struct proxy *proxy); -void free_http_req_rules(struct list *r); -void free_http_res_rules(struct list *r); struct redirect_rule *http_parse_redirect_rule(const char *file, int linenum, struct proxy *curproxy, const char **args, char **errmsg, int use_fmt, int dir); diff --git a/src/haproxy.c b/src/haproxy.c index 05268e1e7..70d4beda3 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2286,14 +2286,14 @@ static void deinit_acl_cond(struct acl_cond *cond) free(cond); } -static void deinit_tcp_rules(struct list *rules) +static void deinit_act_rules(struct list *rules) { - struct act_rule *trule, *truleb; + struct act_rule *rule, *ruleb; - list_for_each_entry_safe(trule, truleb, rules, list) { - LIST_DEL(&trule->list); - deinit_acl_cond(trule->cond); - free(trule); + list_for_each_entry_safe(rule, ruleb, rules, list) { + LIST_DEL(&rule->list); + deinit_acl_cond(rule->cond); + free(rule); } } @@ -2438,9 +2438,12 @@ void deinit(void) free(lf); } - deinit_tcp_rules(&p->tcp_req.inspect_rules); - deinit_tcp_rules(&p->tcp_rep.inspect_rules); - deinit_tcp_rules(&p->tcp_req.l4_rules); + deinit_act_rules(&p->tcp_req.inspect_rules); + deinit_act_rules(&p->tcp_rep.inspect_rules); + deinit_act_rules(&p->tcp_req.l4_rules); + deinit_act_rules(&p->tcp_req.l5_rules); + deinit_act_rules(&p->http_req_rules); + deinit_act_rules(&p->http_res_rules); deinit_stick_rules(&p->storersp_rules); deinit_stick_rules(&p->sticking_rules); @@ -2542,8 +2545,6 @@ void deinit(void) free(p->desc); free(p->fwdfor_hdr_name); - free_http_req_rules(&p->http_req_rules); - free_http_res_rules(&p->http_res_rules); task_destroy(p->task); pool_destroy(p->req_cap_pool); @@ -2568,7 +2569,7 @@ void deinit(void) free(uap->desc); userlist_free(uap->userlist); - free_http_req_rules(&uap->http_req_rules); + deinit_act_rules(&uap->http_req_rules); free(uap); } diff --git a/src/http_rules.c b/src/http_rules.c index b790c5ffe..aad771466 100644 --- a/src/http_rules.c +++ b/src/http_rules.c @@ -1186,31 +1186,6 @@ struct redirect_rule *http_parse_redirect_rule(const char *file, int linenum, st return NULL; } -void free_http_res_rules(struct list *r) -{ - struct act_rule *tr, *pr; - - list_for_each_entry_safe(pr, tr, r, list) { - LIST_DEL(&pr->list); - regex_free(pr->arg.hdr_add.re); - free(pr); - } -} - -void free_http_req_rules(struct list *r) -{ - struct act_rule *tr, *pr; - - list_for_each_entry_safe(pr, tr, r, list) { - LIST_DEL(&pr->list); - if (pr->action == ACT_HTTP_REQ_AUTH) - free(pr->arg.auth.realm); - - regex_free(pr->arg.hdr_add.re); - free(pr); - } -} - __attribute__((constructor)) static void __http_rules_init(void) {