]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
CLEANUP: cfgparse: cascade the warnif_misplaced_* rules
authorWilly Tarreau <w@1wt.eu>
Fri, 25 Nov 2016 14:16:12 +0000 (15:16 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 25 Nov 2016 14:16:12 +0000 (15:16 +0100)
There are 8 functions each repeating what another does and adding one
extra test. We used to have some copy-paste issues in the past due to
this. Instead we now make them simply rely on the previous one and add
the final test. It's much better and much safer. The functions could
be moved to inlines but they're used at a few other locations only,
it didn't make much sense in the end.

src/cfgparse.c

index 4fc63bde32ff1bec206c996e7d392104868b90d3..35ae7b65b601f56735ff6d81c6d529ec9db7f562 100644 (file)
@@ -477,87 +477,60 @@ int warnif_rule_after_use_server(struct proxy *proxy, const char *file, int line
        return 0;
 }
 
-/* report a warning if a "tcp request connection" rule is dangerously placed */
-int warnif_misplaced_tcp_conn(struct proxy *proxy, const char *file, int line, const char *arg)
-{
-       return  warnif_rule_after_tcp_sess(proxy, file, line, arg) ||
-               warnif_rule_after_tcp_cont(proxy, file, line, arg) ||
-               warnif_rule_after_block(proxy, file, line, arg) ||
-               warnif_rule_after_http_req(proxy, file, line, arg) ||
-               warnif_rule_after_reqxxx(proxy, file, line, arg) ||
-               warnif_rule_after_reqadd(proxy, file, line, arg) ||
-               warnif_rule_after_redirect(proxy, file, line, arg) ||
-               warnif_rule_after_use_backend(proxy, file, line, arg) ||
-               warnif_rule_after_use_server(proxy, file, line, arg);
-}
-
-int warnif_misplaced_tcp_sess(struct proxy *proxy, const char *file, int line, const char *arg)
+/* report a warning if a redirect rule is dangerously placed */
+int warnif_misplaced_redirect(struct proxy *proxy, const char *file, int line, const char *arg)
 {
-       return  warnif_rule_after_tcp_cont(proxy, file, line, arg) ||
-               warnif_rule_after_block(proxy, file, line, arg) ||
-               warnif_rule_after_http_req(proxy, file, line, arg) ||
-               warnif_rule_after_reqxxx(proxy, file, line, arg) ||
-               warnif_rule_after_reqadd(proxy, file, line, arg) ||
-               warnif_rule_after_redirect(proxy, file, line, arg) ||
-               warnif_rule_after_use_backend(proxy, file, line, arg) ||
+       return  warnif_rule_after_use_backend(proxy, file, line, arg) ||
                warnif_rule_after_use_server(proxy, file, line, arg);
 }
 
-/* report a warning if a "tcp request content" rule is dangerously placed */
-int warnif_misplaced_tcp_cont(struct proxy *proxy, const char *file, int line, const char *arg)
+/* report a warning if a reqadd rule is dangerously placed */
+int warnif_misplaced_reqadd(struct proxy *proxy, const char *file, int line, const char *arg)
 {
-       return  warnif_rule_after_block(proxy, file, line, arg) ||
-               warnif_rule_after_http_req(proxy, file, line, arg) ||
-               warnif_rule_after_reqxxx(proxy, file, line, arg) ||
-               warnif_rule_after_reqadd(proxy, file, line, arg) ||
-               warnif_rule_after_redirect(proxy, file, line, arg) ||
-               warnif_rule_after_use_backend(proxy, file, line, arg) ||
-               warnif_rule_after_use_server(proxy, file, line, arg);
+       return  warnif_rule_after_redirect(proxy, file, line, arg) ||
+               warnif_misplaced_redirect(proxy, file, line, arg);
 }
 
-/* report a warning if a block rule is dangerously placed */
-int warnif_misplaced_block(struct proxy *proxy, const char *file, int line, const char *arg)
+/* report a warning if a reqxxx rule is dangerously placed */
+int warnif_misplaced_reqxxx(struct proxy *proxy, const char *file, int line, const char *arg)
 {
-       return  warnif_rule_after_http_req(proxy, file, line, arg) ||
-               warnif_rule_after_reqxxx(proxy, file, line, arg) ||
-               warnif_rule_after_reqadd(proxy, file, line, arg) ||
-               warnif_rule_after_redirect(proxy, file, line, arg) ||
-               warnif_rule_after_use_backend(proxy, file, line, arg) ||
-               warnif_rule_after_use_server(proxy, file, line, arg);
+       return  warnif_rule_after_reqadd(proxy, file, line, arg) ||
+               warnif_misplaced_reqadd(proxy, file, line, arg);
 }
 
 /* report a warning if an http-request rule is dangerously placed */
 int warnif_misplaced_http_req(struct proxy *proxy, const char *file, int line, const char *arg)
 {
        return  warnif_rule_after_reqxxx(proxy, file, line, arg) ||
-               warnif_rule_after_reqadd(proxy, file, line, arg) ||
-               warnif_rule_after_redirect(proxy, file, line, arg) ||
-               warnif_rule_after_use_backend(proxy, file, line, arg) ||
-               warnif_rule_after_use_server(proxy, file, line, arg);
+               warnif_misplaced_reqxxx(proxy, file, line, arg);;
 }
 
-/* report a warning if a reqxxx rule is dangerously placed */
-int warnif_misplaced_reqxxx(struct proxy *proxy, const char *file, int line, const char *arg)
+/* report a warning if a block rule is dangerously placed */
+int warnif_misplaced_block(struct proxy *proxy, const char *file, int line, const char *arg)
 {
-       return  warnif_rule_after_reqadd(proxy, file, line, arg) ||
-               warnif_rule_after_redirect(proxy, file, line, arg) ||
-               warnif_rule_after_use_backend(proxy, file, line, arg) ||
-               warnif_rule_after_use_server(proxy, file, line, arg);
+       return  warnif_rule_after_http_req(proxy, file, line, arg) ||
+               warnif_misplaced_http_req(proxy, file, line, arg);
 }
 
-/* report a warning if a reqadd rule is dangerously placed */
-int warnif_misplaced_reqadd(struct proxy *proxy, const char *file, int line, const char *arg)
+/* report a warning if a "tcp request content" rule is dangerously placed */
+int warnif_misplaced_tcp_cont(struct proxy *proxy, const char *file, int line, const char *arg)
 {
-       return  warnif_rule_after_redirect(proxy, file, line, arg) ||
-               warnif_rule_after_use_backend(proxy, file, line, arg) ||
-               warnif_rule_after_use_server(proxy, file, line, arg);
+       return  warnif_rule_after_block(proxy, file, line, arg) ||
+               warnif_misplaced_block(proxy, file, line, arg);
 }
 
-/* report a warning if a redirect rule is dangerously placed */
-int warnif_misplaced_redirect(struct proxy *proxy, const char *file, int line, const char *arg)
+/* report a warning if a "tcp request session" rule is dangerously placed */
+int warnif_misplaced_tcp_sess(struct proxy *proxy, const char *file, int line, const char *arg)
 {
-       return  warnif_rule_after_use_backend(proxy, file, line, arg) ||
-               warnif_rule_after_use_server(proxy, file, line, arg);
+       return  warnif_rule_after_tcp_cont(proxy, file, line, arg) ||
+               warnif_misplaced_tcp_cont(proxy, file, line, arg);
+}
+
+/* report a warning if a "tcp request connection" rule is dangerously placed */
+int warnif_misplaced_tcp_conn(struct proxy *proxy, const char *file, int line, const char *arg)
+{
+       return  warnif_rule_after_tcp_sess(proxy, file, line, arg) ||
+               warnif_misplaced_tcp_sess(proxy, file, line, arg);
 }
 
 /* Report it if a request ACL condition uses some keywords that are incompatible