]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: tcp_rules: tcp-{request,response} requires TCP or HTTP mode
authorAurelien DARRAGON <adarragon@haproxy.com>
Tue, 19 Sep 2023 14:40:09 +0000 (16:40 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 6 Oct 2023 13:34:30 +0000 (15:34 +0200)
Prevent the use of tcp-{request,response} keyword in proxies that are
neither in TCP or HTTP modes.

src/tcp_rules.c

index c7bdddccaad6250a4cda809b1b3a46d64cc3a770..31b36ad7512e1dd276f12a340090a01594fca960 100644 (file)
@@ -1105,6 +1105,12 @@ static int tcp_parse_tcp_rep(char **args, int section_type, struct proxy *curpx,
                return -1;
        }
 
+       if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) {
+               memprintf(err, "%s %s is not allowed because %s %s is not in TCP or HTTP mode",
+                         args[0], args[1], proxy_type_str(curpx), curpx->id);
+               return -1;
+       }
+
        if (strcmp(args[1], "inspect-delay") == 0) {
                if ((curpx == defpx && strlen(defpx->id) == 0) || !(curpx->cap & PR_CAP_BE)) {
                        memprintf(err, "%s %s is only allowed in 'backend' sections or 'defaults' section with a name",
@@ -1222,6 +1228,12 @@ static int tcp_parse_tcp_req(char **args, int section_type, struct proxy *curpx,
                return -1;
        }
 
+       if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) {
+               memprintf(err, "%s %s is not allowed because %s %s is not in TCP or HTTP mode",
+                         args[0], args[1], proxy_type_str(curpx), curpx->id);
+               return -1;
+       }
+
        if (strcmp(args[1], "inspect-delay") == 0) {
                if (curpx == defpx && strlen(defpx->id) == 0) {
                        memprintf(err, "%s %s is not allowed in anonymous 'defaults' sections",