if (xprt_get(XPRT_SSL) && xprt_get(XPRT_SSL)->destroy_srv)
xprt_get(XPRT_SSL)->destroy_srv(srv);
+ else if (xprt_get(XPRT_QUIC) && xprt_get(XPRT_QUIC)->destroy_srv)
+ xprt_get(XPRT_QUIC)->destroy_srv(srv);
while (!LIST_ISEMPTY(&srv->pp_tlvs)) {
srv_tlv = LIST_ELEM(srv->pp_tlvs.n, struct srv_pp_tlv_list *, list);
*/
srv->init_addr_methods = SRV_IADDR_NONE;
+ if (!srv->mux_proto && srv_is_quic(srv)) {
+ /* Force QUIC as mux-proto on server with quic addresses.
+ * Incompatibilities with TCP proxy mode will be catch by the
+ * next code block.
+ */
+ srv->mux_proto = get_mux_proto(ist("quic"));
+ }
+
if (srv->mux_proto) {
int proto_mode = conn_pr_mode_to_proto_mode(be->mode);
const struct mux_proto_list *mux_ent;
ha_alert("MUX protocol is not usable for server.\n");
goto out;
}
+ else {
+ if ((mux_ent->mux->flags & MX_FL_FRAMED) && !srv_is_quic(srv)) {
+ ha_alert("MUX protocol is incompatible with stream transport used by server.\n");
+ goto out;
+ }
+ else if (!(mux_ent->mux->flags & MX_FL_FRAMED) && srv_is_quic(srv)) {
+ ha_alert("MUX protocol is incompatible with framed transport used by server.\n");
+ goto out;
+ }
+ }
}
if (!srv_alloc_lb(srv, be)) {
if (xprt_get(XPRT_SSL)->prepare_srv(srv))
goto out;
}
+ else if (xprt_get(XPRT_QUIC) && xprt_get(XPRT_QUIC)->prepare_srv) {
+ if (xprt_get(XPRT_QUIC)->prepare_srv(srv))
+ goto out;
+ }
}
if (srv->trackit) {