]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] config: tcp-request content only accepts "if" or "unless"
authorWilly Tarreau <w@1wt.eu>
Tue, 14 Jul 2009 19:17:05 +0000 (21:17 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 14 Jul 2009 19:17:05 +0000 (21:17 +0200)
As reported by Maik Broemme, if something different from "if" or
"unless" was specified after "tcp-request content accept", the
condition would silently remain void. The parser must obviously
complain since this typically corresponds to a forgotten "if".

src/proto_tcp.c

index 3bdb2786749100b511b496421e79c18d640bf2cb..99900e452c8bf6c1f521ba220b0caa0fc5293b38 100644 (file)
@@ -591,10 +591,18 @@ static int tcp_parse_tcp_req(char **args, int section_type, struct proxy *curpx,
                pol = ACL_COND_NONE;
                cond = NULL;
 
-               if (!strcmp(args[3], "if"))
+               if (!*args[3])
+                       pol = ACL_COND_NONE;
+               else if (!strcmp(args[3], "if"))
                        pol = ACL_COND_IF;
                else if (!strcmp(args[3], "unless"))
                        pol = ACL_COND_UNLESS;
+               else {
+                       retlen = snprintf(err, errlen,
+                                         "'%s %s %s' only accepts 'if' or 'unless', in %s '%s' (was '%s')",
+                                         args[0], args[1], args[2], proxy_type_str(curpx), curpx->id, args[3]);
+                       return -1;
+               }
 
                /* Note: we consider "if TRUE" when there is no condition */
                if (pol != ACL_COND_NONE &&