]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: Warning for OpenSSL wrapper QUIC bindings without "limited-quic"
authorFrédéric Lécaille <flecaille@haproxy.com>
Tue, 8 Aug 2023 09:41:13 +0000 (11:41 +0200)
committerFrédéric Lécaille <flecaille@haproxy.com>
Tue, 8 Aug 2023 12:59:17 +0000 (14:59 +0200)
If the "limited-quic" globale option wa not set, the QUIC listener bindings were
not bound, this is ok, but silently ignored.

Add a warning in these cases to ask the user to explicitely enable the QUIC
bindings when building QUIC support against a TLS/SSL library without QUIC
support (OpenSSL).

src/protocol.c

index 23ca7af70e3bce321983029ada8db12f20fed6a9..3817cf899167718ad4b2ee112e7c42c8c5986544 100644 (file)
@@ -118,13 +118,22 @@ int protocol_supports_flag(struct protocol *proto, uint flag)
 /* Return 1 if QUIC protocol may be bound, 0 if no, depending on the tuning
  * parameters.
  */
-static inline int protocol_may_bind_quic(void)
+static inline int protocol_may_bind_quic(struct listener *l)
 {
+#ifdef USE_QUIC_OPENSSL_COMPAT
+       struct proxy *px = l->bind_conf->frontend;
+
+#endif
        if (global.tune.options & GTUNE_NO_QUIC)
                return 0;
 #ifdef USE_QUIC_OPENSSL_COMPAT
-       if (!(global.tune.options & GTUNE_LIMITED_QUIC))
+       if (!(global.tune.options & GTUNE_LIMITED_QUIC)) {
+               ha_warning("Binding [%s:%d] for %s %s: receiving socket not bound"
+                          " (\"limited-quic\" global option is not set)\n",
+                          l->bind_conf->file, l->bind_conf->line,
+                          proxy_type_str(px), px->id);
                return 0;
+       }
 #endif
        return 1;
 }
@@ -146,12 +155,12 @@ int protocol_bind_all(int verbose)
        HA_SPIN_LOCK(PROTO_LOCK, &proto_lock);
        list_for_each_entry(proto, &protocols, list) {
                list_for_each_entry(receiver, &proto->receivers, proto_list) {
+                       listener = LIST_ELEM(receiver, struct listener *, rx);
 #ifdef USE_QUIC
                        if ((proto == &proto_quic4 || proto == &proto_quic6) &&
-                           !protocol_may_bind_quic())
+                           !protocol_may_bind_quic(listener))
                                continue;
 #endif
-                       listener = LIST_ELEM(receiver, struct listener *, rx);
 
                        lerr = proto->fam->bind(receiver, &errmsg);
                        err |= lerr;