]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: check: reject invalid check config on a QUIC server
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 9 Sep 2025 09:20:46 +0000 (11:20 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 9 Sep 2025 14:55:09 +0000 (16:55 +0200)
QUIC is now supported on the backend side. The previous commit ensures
that simple checks can be activated on QUIC servers without any issue.

The current patch ensures that check server settings remain compatible
with a QUIC server. Thus, configuration is now invalid if check
specifies an explicit MUX proto other than QUIC, disables SSL or try to
use PROXY protocol.

src/check.c

index 03c85613f8f0fc5fcbfc67f93eaddece629f4a6f..3b046a27e58fe34256d2be729f2e832079341869 100644 (file)
@@ -1854,6 +1854,27 @@ int init_srv_check(struct server *srv)
 
        /* validate <srv> server health-check settings */
 
+       if (srv_is_quic(srv)) {
+               if (srv->check.mux_proto && srv->check.mux_proto != get_mux_proto(ist("quic"))) {
+                       ha_alert("config: %s '%s': QUIC server '%s' uses an incompatible MUX protocol for checks.\n",
+                                proxy_type_str(srv->proxy), srv->proxy->id, srv->id);
+                       ret |= ERR_ALERT | ERR_FATAL;
+                       goto out;
+               }
+
+               if (srv->check.use_ssl < 0) {
+                       ha_alert("config: %s '%s': SSL is mandatory for checks on QUIC server '%s'.\n",
+                                proxy_type_str(srv->proxy), srv->proxy->id, srv->id);
+                       ret |= ERR_ALERT | ERR_FATAL;
+               }
+
+               if (srv->check.send_proxy) {
+                       ha_alert("config: %s '%s': cannot use PROXY protocol for checks on QUIC server '%s'.\n",
+                                proxy_type_str(srv->proxy), srv->proxy->id, srv->id);
+                       ret |= ERR_ALERT | ERR_FATAL;
+               }
+       }
+
        /* We need at least a service port, a check port or the first tcp-check
         * rule must be a 'connect' one when checking an IPv4/IPv6 server.
         */