diff --git a/include/proto/proxy.h b/include/proto/proxy.h
index 116c00a..964a388 100644
--- a/include/proto/proxy.h
+++ b/include/proto/proxy.h
@@ -55,7 +55,8 @@
 void init_new_proxy(struct proxy *p);
 int get_backend_server(const char *bk_name, const char *sv_name,
 		       struct proxy **bk, struct server **sv);
-
+int test_backend_server(const char *bk_name, char *uri,
+		struct proxy **bk, struct server **sv);
 /*
  * This function returns a string containing the type of the proxy in a format
  * suitable for error messages, from its capabilities.
diff --git a/src/dumpstats.c b/src/dumpstats.c
index ca084ac..9096ff0 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -1306,7 +1306,48 @@
 		}
 	}
 	else if (strcmp(args[0], "get") == 0) {
-		if (strcmp(args[1], "weight") == 0) {
+		if (strcmp(args[1], "server") == 0) {
+			struct proxy *px;
+			struct server *sv;
+			char pn[INET6_ADDRSTRLEN];
+			uint16_t port;
+			struct sockaddr_storage* addr;
+
+			/* split "backend/server" and make <line> point to server */
+			for (line = args[2]; *line; line++)
+				if (*line == '/') {
+					*line++ = '\0';
+					break;
+				}
+
+			if (!*line) {
+				appctx->ctx.cli.msg = "Require 'backend/server'.\n";
+				appctx->st0 = STAT_CLI_PRINT;
+				return 1;
+			}
+
+			if (!test_backend_server(args[2], line, &px, &sv)) {
+				appctx->ctx.cli.msg = px ? "No such server.\n" : "No such backend.\n";
+				appctx->st0 = STAT_CLI_PRINT;
+				return 1;
+			}
+			addr = &(sv->addr);
+		        switch (addr_to_str(addr, pn, sizeof(pn))) {
+			case AF_INET:
+				port = ((struct sockaddr_in *)addr)->sin_port;
+				break;
+			case AF_INET6:
+				port = ((struct sockaddr_in6 *)addr)->sin6_port;
+				break;
+			default:
+				port = 0;
+		                break;
+			}
+			snprintf(trash.str, trash.size, "%s,%s,%u\n", sv->id, pn, ntohs(port));
+			bi_putstr(si->ib, trash.str);
+			return 1;
+		}
+		else if (strcmp(args[1], "weight") == 0) {
 			struct proxy *px;
 			struct server *sv;
 
diff --git a/src/proxy.c b/src/proxy.c
index 405c4c4..641acb0 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -85,6 +85,25 @@
 		return "unknown";
 }
 
+int test_backend_server(const char *bk_name, char *uri,
+		struct proxy **bk, struct server **sv)
+{
+        struct proxy *p;
+        struct server *s;
+        int uri_len = strlen(uri);
+	*sv = NULL;
+	p = findproxy(bk_name, PR_CAP_BE);
+	if (bk)
+		*bk = p;
+	if (!p)
+		return 0;
+	fprintf(stderr, "%s\n", uri);
+	s = get_server_uh(p, uri, uri_len);
+	*sv = s;
+        if (!s)
+                return 0;
+        return 1;
+}
 /*
  * This function scans the list of backends and servers to retrieve the first
  * backend and the first server with the given names, and sets them in both
