[BUG] config: tcp-request content only accepts "if" or "unless"
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".
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 3bdb278..99900e4 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -591,10 +591,18 @@
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 &&