diff --git a/include/proto/proxy.h b/include/proto/proxy.h
index d4d4c85..5297d08 100644
--- a/include/proto/proxy.h
+++ b/include/proto/proxy.h
@@ -39,7 +39,8 @@
 
 const char *proxy_cap_str(int cap);
 const char *proxy_mode_str(int mode);
-struct proxy *findproxy(const char *name, int mode, int cap);
+struct proxy *findproxy_mode(const char *name, int mode, int cap);
+struct proxy *findproxy(const char *name, int cap);
 struct server *findserver(const struct proxy *px, const char *name);
 int proxy_cfg_ensure_no_http(struct proxy *curproxy);
 int get_backend_server(const char *bk_name, const char *sv_name,
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 4363796..34d4476 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -4166,7 +4166,7 @@
 		if (curproxy->defbe.name) {
 			struct proxy *target;
 
-			target = findproxy(curproxy->defbe.name, curproxy->mode, PR_CAP_BE);
+			target = findproxy_mode(curproxy->defbe.name, curproxy->mode, PR_CAP_BE);
 			if (!target) {
 				Alert("Proxy '%s': unable to find required default_backend: '%s'.\n",
 					curproxy->id, curproxy->defbe.name);
@@ -4196,7 +4196,7 @@
 				if (exp->action != ACT_SETBE)
 					continue;
 
-				target = findproxy(exp->replace, PR_MODE_HTTP, PR_CAP_BE);
+				target = findproxy_mode(exp->replace, PR_MODE_HTTP, PR_CAP_BE);
 				if (!target) {
 					Alert("Proxy '%s': unable to find required setbe: '%s'.\n",
 						curproxy->id, exp->replace);
@@ -4221,7 +4221,7 @@
 		list_for_each_entry(rule, &curproxy->switching_rules, list) {
 			struct proxy *target;
 
-			target = findproxy(rule->be.name, curproxy->mode, PR_CAP_BE);
+			target = findproxy_mode(rule->be.name, curproxy->mode, PR_CAP_BE);
 
 			if (!target) {
 				Alert("Proxy '%s': unable to find required use_backend: '%s'.\n",
@@ -4433,7 +4433,7 @@
 				}
 
 				if (pname) {
-					px = findproxy(pname, curproxy->mode, PR_CAP_BE);
+					px = findproxy(pname, PR_CAP_BE);
 					if (!px) {
 						Alert("config : %s '%s', server '%s': unable to find required proxy '%s' for tracking.\n",
 							proxy_type_str(curproxy), curproxy->id,
@@ -4455,7 +4455,7 @@
 
 				if (!(srv->state & SRV_CHECKED)) {
 					Alert("config : %s '%s', server '%s': unable to use %s/%s for "
-						"tracing as it does not have checks enabled.\n",
+						"tracking as it does not have checks enabled.\n",
 						proxy_type_str(curproxy), curproxy->id,
 						newsrv->id, px->id, srv->id);
 					cfgerr++;
diff --git a/src/proxy.c b/src/proxy.c
index dd65048..181cdd8 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -281,7 +281,7 @@
  * requested name as this often leads into unexpected situations.
  */
 
-struct proxy *findproxy(const char *name, int mode, int cap) {
+struct proxy *findproxy_mode(const char *name, int mode, int cap) {
 
 	struct proxy *curproxy, *target = NULL;
 
@@ -311,6 +311,25 @@
 	return target;
 }
 
+struct proxy *findproxy(const char *name, int cap) {
+
+	struct proxy *curproxy, *target = NULL;
+
+	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+		if ((curproxy->cap & cap)!=cap || strcmp(curproxy->id, name))
+			continue;
+
+		if (!target) {
+			target = curproxy;
+			continue;
+		}
+
+		return NULL;
+	}
+
+	return target;
+}
+
 /*
  * This function finds a server with matching name within selected proxy.
  * It also checks if there are more matching servers with
