From 606ad73e73600275aae944f00bda4af9976c0be8 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 14 Jul 2009 21:17:05 +0200 Subject: [PATCH] [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". --- src/proto_tcp.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/proto_tcp.c b/src/proto_tcp.c index 3bdb27867..99900e452 100644 --- a/src/proto_tcp.c +++ b/src/proto_tcp.c @@ -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 &&