[MINOR] Free tcp rules on denint()
The motivation for this is that when soft-restart is merged
it will be come more important to free all relevant memory in deinit()
Discovered using valgrind.
diff --git a/src/haproxy.c b/src/haproxy.c
index 3217695..da9f8c6 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -66,6 +66,8 @@
#include <types/capture.h>
#include <types/global.h>
+#include <types/proto_tcp.h>
+#include <types/acl.h>
#include <proto/auth.h>
#include <proto/acl.h>
@@ -672,6 +674,29 @@
}
+static void deinit_tcp_rules(struct list *rules)
+{
+ struct tcp_rule *trule, *truleb;
+ struct acl_term_suite *suite, *suiteb;
+ struct acl_term *term, *termb;
+
+ list_for_each_entry_safe(trule, truleb, rules, list) {
+ if (trule->cond) {
+ list_for_each_entry_safe(suite, suiteb, &trule->cond->suites, list) {
+ list_for_each_entry_safe(term, termb, &suite->terms, list) {
+ LIST_DEL(&term->list);
+ free(term);
+ }
+ LIST_DEL(&suite->list);
+ free(suite);
+ }
+ }
+ LIST_DEL(&trule->list);
+ free(trule->cond);
+ free(trule);
+ }
+}
+
void deinit(void)
{
struct proxy *p = proxy, *p0;
@@ -791,6 +816,9 @@
free(rdr);
}
+ deinit_tcp_rules(&p->tcp_req.inspect_rules);
+ deinit_tcp_rules(&p->tcp_req.l4_rules);
+
free(p->appsession_name);
h = p->req_cap;