[BUG] uri_auth: do not attemp to convert uri_auth -> http-request more than once
Bug reported by Laurent Dolosor.
diff --git a/include/common/uri_auth.h b/include/common/uri_auth.h
index a73c1ad..bffd694 100644
--- a/include/common/uri_auth.h
+++ b/include/common/uri_auth.h
@@ -30,6 +30,7 @@
#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 {
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 90cc9b0..b5437a6 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -4803,7 +4803,8 @@
}
}
- 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 @@
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 @@
free(curproxy->uri_auth->auth_realm);
curproxy->uri_auth->auth_realm = NULL;
}
+
+ curproxy->uri_auth->flags |= ST_CONVDONE;
}
out_uri_auth_compat: