]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] config: fix erroneous check on cookie domain names, again
authorKrzysztof Piotr Oledzki <ole@ans.pl>
Tue, 15 Dec 2009 22:40:47 +0000 (23:40 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 17 Dec 2009 20:14:21 +0000 (21:14 +0100)
The previous check was correct: the RFC states that it is required
to have a domain-name which contained a dot AND began with a dot.
However, currently some (all?) browsers do not obey this specification,
so such configuration might work.

This patch reverts 3d8fbb6658d4414dac20892bbd9e79e14e99e67f but
changes the check from FATAL to WARNING and extends the message.

src/cfgparse.c

index 5d2ca6d6371d5b102ecc6e7ffc77c88b39a00ef5..fd338f723f18b50cb5cd78be294cf63384d498d8 100644 (file)
@@ -1458,13 +1458,13 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm)
                                        goto out;
                                }
 
-                               if (*args[cur_arg + 1] != '.' && !strchr(args[cur_arg + 1] + 1, '.')) {
+                               if (*args[cur_arg + 1] != '.' || !strchr(args[cur_arg + 1] + 1, '.')) {
                                        /* rfc2109, 4.3.2 Rejecting Cookies */
-                                       Alert("parsing [%s:%d]: domain '%s' contains no embedded"
-                                               " dots and does not start with a dot.\n",
+                                       Warning("parsing [%s:%d]: domain '%s' contains no embedded"
+                                               " dots nor does not start with a dot."
+                                               " RFC forbids it, this configuration may not work properly.\n",
                                                file, linenum, args[cur_arg + 1]);
-                                       err_code |= ERR_ALERT | ERR_FATAL;
-                                       goto out;
+                                       err_code |= ERR_WARN;
                                }
 
                                err = invalid_domainchar(args[cur_arg + 1]);