MINOR: check: report error on incompatible proto
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 13 Nov 2020 11:34:57 +0000 (12:34 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 13 Nov 2020 15:36:23 +0000 (16:36 +0100)
If the check mux has been explicitly defined but is incompatible with
the selected check type (tcp-check vs http-check), report a warning and
prevent haproxy startup.

(cherry picked from commit 7c148901837c5deed0f33bc037480faf10cb9a1f)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>

src/check.c

index fe9f8be..0203e3e 100644 (file)
@@ -1260,6 +1260,15 @@ static int init_srv_check(struct server *srv)
             (srv->mux_proto->mode == PROTO_MODE_TCP && check_type != TCPCHK_RULES_HTTP_CHK))) {
                srv->check.mux_proto = srv->mux_proto;
        }
+       /* test that check proto is valid if explicitly defined */
+       else if (srv->check.mux_proto &&
+                ((srv->check.mux_proto->mode == PROTO_MODE_HTTP && check_type != TCPCHK_RULES_HTTP_CHK) ||
+                 (srv->check.mux_proto->mode == PROTO_MODE_TCP && check_type == TCPCHK_RULES_HTTP_CHK))) {
+               ha_alert("config: %s '%s': server '%s' uses an incompatible MUX protocol for the selected check type\n",
+                        proxy_type_str(srv->proxy), srv->proxy->id, srv->id);
+               ret |= ERR_ALERT | ERR_FATAL;
+               goto out;
+       }
 
        /* validate <srv> server health-check settings */