MINOR: server: Make 'default-server' support 'check' keyword.

Before this patch 'check' setting was only supported by 'server' directives.
This patch makes also 'default-server' directives support this setting.
A new 'no-check' keyword parser has been implemented to disable this setting both
in 'default-server' and 'server' directives.
Should not break anything.
diff --git a/include/types/server.h b/include/types/server.h
index feede6d..c973d69 100644
--- a/include/types/server.h
+++ b/include/types/server.h
@@ -240,6 +240,7 @@
 	int puid;				/* proxy-unique server ID, used for SNMP, and "first" LB algo */
 	int tcp_ut;                             /* for TCP, user timeout */
 
+	int do_check;                           /* temporary variable used during parsing to denote if health checks must be enabled */
 	struct check check;                     /* health-check specific configuration */
 	struct check agent;                     /* agent specific configuration */
 
diff --git a/src/server.c b/src/server.c
index 5819b75..e3a5b25 100644
--- a/src/server.c
+++ b/src/server.c
@@ -221,6 +221,14 @@
 	return 0;
 }
 
+/* Parse the "check" server keyword */
+static int srv_parse_check(char **args, int *cur_arg,
+                           struct proxy *curproxy, struct server *newsrv, char **err)
+{
+	newsrv->do_check = 1;
+	return 0;
+}
+
 /* Parse the "check-send-proxy" server keyword */
 static int srv_parse_check_send_proxy(char **args, int *cur_arg,
                                       struct proxy *curproxy, struct server *newsrv, char **err)
@@ -269,6 +277,16 @@
 	return 0;
 }
 
+/* Parse the "no-check" server keyword */
+static int srv_parse_no_check(char **args, int *cur_arg,
+                              struct proxy *curproxy, struct server *newsrv, char **err)
+{
+	free_check(&newsrv->check);
+	newsrv->check.state &= ~CHK_ST_CONFIGURED & ~CHK_ST_ENABLED;
+	newsrv->do_check = 0;
+	return 0;
+}
+
 /* Parse the "no-check-send-proxy" server keyword */
 static int srv_parse_no_check_send_proxy(char **args, int *cur_arg,
                                          struct proxy *curproxy, struct server *newsrv, char **err)
@@ -945,9 +963,11 @@
  */
 static struct srv_kw_list srv_kws = { "ALL", { }, {
 	{ "backup",              srv_parse_backup,              0,  1 }, /* Flag as backup server */
+	{ "check",               srv_parse_check,               0,  1 }, /* enable health checks */
 	{ "check-send-proxy",    srv_parse_check_send_proxy,    0,  1 }, /* enable PROXY protocol for health checks */
 	{ "id",                  srv_parse_id,                  1,  0 }, /* set id# of server */
 	{ "no-backup",           srv_parse_no_backup,           0,  1 }, /* Flag as non-backup server */
+	{ "no-check",            srv_parse_no_check,            0,  1 }, /* disable health checks */
 	{ "no-check-send-proxy", srv_parse_no_check_send_proxy, 0,  1 }, /* disable PROXY protol for health checks */
 	{ "no-send-proxy",       srv_parse_no_send_proxy,       0,  1 }, /* Disable use of PROXY V1 protocol */
 	{ "no-send-proxy-v2",    srv_parse_no_send_proxy_v2,    0,  1 }, /* Disable use of PROXY V2 protocol */
@@ -1110,7 +1130,7 @@
 
 	if (!strcmp(args[0], "server") || !strcmp(args[0], "default-server")) {  /* server address */
 		int cur_arg;
-		int do_agent = 0, do_check = 0, defsrv = (*args[0] == 'd');
+		int do_agent = 0, defsrv = (*args[0] == 'd');
 
 		if (!defsrv && curproxy == defproxy) {
 			Alert("parsing [%s:%d] : '%s' not allowed in 'defaults' section.\n", file, linenum, args[0]);
@@ -1160,7 +1180,6 @@
 			LIST_INIT(&newsrv->priv_conns);
 			LIST_INIT(&newsrv->idle_conns);
 			LIST_INIT(&newsrv->safe_conns);
-			do_check = 0;
 			do_agent = 0;
 			newsrv->flags = 0;
 			newsrv->admin = 0;
@@ -1248,6 +1267,7 @@
 			newsrv->check.port	= curproxy->defsrv.check.port;
 			/* Note: 'flags' field has potentially been already initialized. */
 			newsrv->flags       |= curproxy->defsrv.flags;
+			newsrv->do_check    = curproxy->defsrv.do_check;
 			if (newsrv->check.port)
 				newsrv->flags |= SRV_F_CHECKPORT;
 			newsrv->check.inter	= curproxy->defsrv.check.inter;
@@ -1662,11 +1682,6 @@
 
 				cur_arg += 2;
 			}
-			else if (!defsrv && !strcmp(args[cur_arg], "check")) {
-				global.maxsock++;
-				do_check = 1;
-				cur_arg += 1;
-			}
 			else if (!defsrv && !strcmp(args[cur_arg], "disabled")) {
 				newsrv->admin |= SRV_ADMF_CMAINT;
 				newsrv->admin |= SRV_ADMF_FMAINT;
@@ -2029,7 +2044,8 @@
 			}
 		}
 
-		if (do_check) {
+		/* This check is done only for 'server' instances. */
+		if (!defsrv && newsrv->do_check) {
 			const char *ret;
 
 			if (newsrv->trackit) {
@@ -2094,6 +2110,7 @@
 				newsrv->resolution->opts = &newsrv->dns_opts;
 
 			newsrv->check.state |= CHK_ST_CONFIGURED | CHK_ST_ENABLED;
+			global.maxsock++;
 		}
 
 		if (do_agent) {