For QUIC backend side support, server xprt has to be set to XPRT_QUIC
when a quic4/6 address is parsed.
Prior to this patch, this was performed in _srv_parse_init(). However
this is not functional with server-template as this function is not
called for the duplicated entries. Xprt field was not updated, which
prevented any communication on these servers.
To properly initialize a QUIC server, uses the same method as SSL.
Server xprt is now set later during ssl_sock_prepare_srv_ctx(). This
callback is invoked through XPRT prepare_srv during proxy_finalize(),
called for any servers with SSL or QUIC settings.
This must be backported up to 3.3.
err_code |= ERR_ALERT | ERR_FATAL;
goto out;
}
-
- mark_tainted(TAINTED_CONFIG_EXP_KW_DECLARED);
- newsrv->xprt = xprt_get(XPRT_QUIC);
- quic_transport_params_init(&newsrv->quic_params, 0);
}
#else
if (srv_is_quic(newsrv)) {
}
}
- /* The QUIC server xprt has already been set. */
- if (srv->use_ssl == 1 && !srv_is_quic(srv))
- srv->xprt = &ssl_sock;
+ if (srv->use_ssl == 1) {
+#ifdef USE_QUIC
+ if (srv_is_quic(srv)) {
+ mark_tainted(TAINTED_CONFIG_EXP_KW_DECLARED);
+ srv->xprt = xprt_get(XPRT_QUIC);
+ quic_transport_params_init(&srv->quic_params, 0);
+ }
+ else
+#endif
+ srv->xprt = &ssl_sock;
+ }
if (srv->ssl_ctx.client_crt) {
const int create_if_none = srv->flags & SRV_F_DYNAMIC ? 0 : 1;