diff --git a/src/cli.c b/src/cli.c
index 177a955..3e560c3 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -73,7 +73,6 @@
 	"  help           : this message\n"
 	"  prompt         : toggle interactive mode with prompt\n"
 	"  quit           : disconnect\n"
-	"  set maxconn    : change a maxconn setting\n"
 	"  set rate-limit : change a rate limiting value\n"
 	"  disable        : put a server or frontend in maintenance mode\n"
 	"  enable         : re-enable a server or frontend which is in maintenance mode\n"
@@ -542,51 +541,7 @@
 		}
 	}
 	else if (strcmp(args[0], "set") == 0) {
-		if (strcmp(args[1], "maxconn") == 0) {
-			if (strcmp(args[2], "frontend") == 0) {
-				struct proxy *px;
-				struct listener *l;
-				int v;
-
-				px = expect_frontend_admin(s, si, args[3]);
-				if (!px)
-					return 1;
-
-				if (!*args[4]) {
-					appctx->ctx.cli.msg = "Integer value expected.\n";
-					appctx->st0 = STAT_CLI_PRINT;
-					return 1;
-				}
-
-				v = atoi(args[4]);
-				if (v < 0) {
-					appctx->ctx.cli.msg = "Value out of range.\n";
-					appctx->st0 = STAT_CLI_PRINT;
-					return 1;
-				}
-
-				/* OK, the value is fine, so we assign it to the proxy and to all of
-				 * its listeners. The blocked ones will be dequeued.
-				 */
-				px->maxconn = v;
-				list_for_each_entry(l, &px->conf.listeners, by_fe) {
-					l->maxconn = v;
-					if (l->state == LI_FULL)
-						resume_listener(l);
-				}
-
-				if (px->maxconn > px->feconn && !LIST_ISEMPTY(&px->listener_queue))
-					dequeue_all_listeners(&px->listener_queue);
-
-				return 1;
-			}
-			else {
-				appctx->ctx.cli.msg = "'set maxconn' only supports 'frontend', 'server', and 'global'.\n";
-				appctx->st0 = STAT_CLI_PRINT;
-				return 1;
-			}
-		}
-		else if (strcmp(args[1], "rate-limit") == 0) {
+		if (strcmp(args[1], "rate-limit") == 0) {
 			if (strcmp(args[2], "connections") == 0) {
 				if (strcmp(args[3], "global") == 0) {
 					int v;
diff --git a/src/proxy.c b/src/proxy.c
index 45a3db0..7d33442 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -1419,8 +1419,52 @@
 	return 1;
 }
 
+/* Parses the "set maxconn frontend" directive, it always returns 1 */
+static int cli_parse_set_maxconn_frontend(char **args, struct appctx *appctx, void *private)
+{
+	struct proxy *px;
+	struct listener *l;
+	int v;
+
+	if (!cli_has_level(appctx, ACCESS_LVL_ADMIN))
+		return 1;
+
+	px = cli_find_frontend(appctx, args[3]);
+	if (!px)
+		return 1;
+
+	if (!*args[4]) {
+		appctx->ctx.cli.msg = "Integer value expected.\n";
+		appctx->st0 = STAT_CLI_PRINT;
+		return 1;
+	}
+
+	v = atoi(args[4]);
+	if (v < 0) {
+		appctx->ctx.cli.msg = "Value out of range.\n";
+		appctx->st0 = STAT_CLI_PRINT;
+		return 1;
+	}
+
+	/* OK, the value is fine, so we assign it to the proxy and to all of
+	 * its listeners. The blocked ones will be dequeued.
+	 */
+	px->maxconn = v;
+	list_for_each_entry(l, &px->conf.listeners, by_fe) {
+		l->maxconn = v;
+		if (l->state == LI_FULL)
+			resume_listener(l);
+	}
+
+	if (px->maxconn > px->feconn && !LIST_ISEMPTY(&px->listener_queue))
+		dequeue_all_listeners(&px->listener_queue);
+
+	return 1;
+}
+
 /* register cli keywords */
 static struct cli_kw_list cli_kws = {{ },{
+	{ { "set", "maxconn", "frontend",  NULL }, "set maxconn frontend : change a frontend's maxconn setting", cli_parse_set_maxconn_frontend, NULL },
 	{ { "show","servers", "state",  NULL }, "show servers state [id]: dump volatile server information (for backend <id>)", cli_parse_show_servers, cli_io_handler_servers_state },
 	{ { "show", "backend", NULL }, "show backend   : list backends in the current running config", cli_parse_show_backend, cli_io_handler_show_backend },
 	{{},}
