]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] uri_auth: do not attemp to convert uri_auth -> http-request more than once
authorKrzysztof Piotr Oledzki <ole@ans.pl>
Mon, 22 Feb 2010 19:27:23 +0000 (20:27 +0100)
committerWilly Tarreau <w@1wt.eu>
Tue, 23 Feb 2010 11:36:10 +0000 (12:36 +0100)
Bug reported by Laurent Dolosor.

include/common/uri_auth.h
src/cfgparse.c

index a73c1adbae69873a657935292385b23ef315b523..bffd694d65422e75053b69d7298fa46dad8cb024 100644 (file)
@@ -30,6 +30,7 @@ struct stat_scope {
 #define        ST_SHNODE       0x00000002      /* show node name */
 #define        ST_SHDESC       0x00000004      /* show description */
 #define        ST_SHLGNDS      0x00000008      /* show legends */
+#define        ST_CONVDONE     0x00000010      /* req_acl conversion done */
 
 /* later we may link them to support multiple URI matching */
 struct uri_auth {
index 90cc9b03bb814827e40038c9980515464292bf98..b5437a6a1a5657184ec60d2ddec381e31ecd9384 100644 (file)
@@ -4803,7 +4803,8 @@ int check_config_validity()
                        }
                }
 
-               if (curproxy->uri_auth && !LIST_ISEMPTY(&curproxy->uri_auth->req_acl) &&
+               if (curproxy->uri_auth && !(curproxy->uri_auth->flags & ST_CONVDONE) &&
+                   !LIST_ISEMPTY(&curproxy->uri_auth->req_acl) &&
                    (curproxy->uri_auth->userlist || curproxy->uri_auth->auth_realm )) {
                        Alert("%s '%s': stats 'auth'/'realm' and 'http-request' can't be used at the same time.\n",
                              "proxy", curproxy->id);
@@ -4811,7 +4812,7 @@ int check_config_validity()
                        goto out_uri_auth_compat;
                }
 
-               if (curproxy->uri_auth && curproxy->uri_auth->userlist) {
+               if (curproxy->uri_auth && curproxy->uri_auth->userlist && !(curproxy->uri_auth->flags & ST_CONVDONE)) {
                        const char *uri_auth_compat_req[10];
                        struct req_acl_rule *req_acl;
                        int i = 0;
@@ -4842,6 +4843,8 @@ int check_config_validity()
                                free(curproxy->uri_auth->auth_realm);
                                curproxy->uri_auth->auth_realm = NULL;
                        }
+
+                       curproxy->uri_auth->flags |= ST_CONVDONE;
                }
 out_uri_auth_compat: