From: Willy Tarreau Date: Tue, 14 Jul 2009 19:17:05 +0000 (+0200) Subject: [BUG] config: tcp-request content only accepts "if" or "unless" X-Git-Tag: v1.4-dev1~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=606ad73e73600275aae944f00bda4af9976c0be8;p=thirdparty%2Fhaproxy.git [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 3bdb278674..99900e452c 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 &&