[MINOR] try to guess server check port when unset

When a server has no port specified and there is a check
enabled on it, the check is disabled because the port is
unknown. However, people expect the "listen" line to set
the check port just like it sets the server's port. Now,
if a port is specified in the listen or in the first bind
and nowhere else, it will be used for the checks as well.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index c49ce21..b385781 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1237,6 +1237,21 @@
 			if (!newsrv->check_port && !(newsrv->state & SRV_MAPPORTS))
 				newsrv->check_port = realport; /* by default */
 			if (!newsrv->check_port) {
+				/* not yet valid, because no port was set on
+				 * the server either. We'll check if we have
+				 * a known port on the first listener.
+				 */
+				struct listener *l;
+				l = curproxy->listen;
+				if (l) {
+					int port;
+					port = (l->addr.ss_family == AF_INET6)
+					        ? ntohs(((struct sockaddr_in6 *)(&l->addr))->sin6_port)
+						: ntohs(((struct sockaddr_in *)(&l->addr))->sin_port);
+					newsrv->check_port = port;
+				}
+			}
+			if (!newsrv->check_port) {
 				Alert("parsing [%s:%d] : server %s has neither service port nor check port. Check has been disabled.\n",
 				      file, linenum, newsrv->id);
 				return -1;