From: Frédéric Lécaille Date: Tue, 8 Aug 2023 09:41:13 +0000 (+0200) Subject: MINOR: quic: Warning for OpenSSL wrapper QUIC bindings without "limited-quic" X-Git-Tag: v2.9-dev3~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c730803d;p=thirdparty%2Fhaproxy.git MINOR: quic: Warning for OpenSSL wrapper QUIC bindings without "limited-quic" 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). --- diff --git a/src/protocol.c b/src/protocol.c index 23ca7af70e..3817cf8991 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -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;