diff --git a/src/mux_quic.c b/src/mux_quic.c index ffbb663ee..947c10609 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -194,16 +194,18 @@ static struct qcs *qcs_new(struct qcc *qcc, uint64_t id, enum qcs_type type) tot_time_reset(&qcs->timer.fctl); tot_time_start(&qcs->timer.base); - qcs->sd = sedesc_new(); - if (!qcs->sd) - goto err; - qcs->sd->se = qcs; - qcs->sd->conn = qcc->conn; - se_fl_set(qcs->sd, SE_FL_T_MUX | SE_FL_ORPHAN | SE_FL_NOT_FIRST); - se_expect_no_data(qcs->sd); + if (!conn_is_back(conn)) { + qcs->sd = sedesc_new(); + if (!qcs->sd) + goto err; + qcs->sd->se = qcs; + qcs->sd->conn = qcc->conn; + se_fl_set(qcs->sd, SE_FL_T_MUX | SE_FL_ORPHAN | SE_FL_NOT_FIRST); + se_expect_no_data(qcs->sd); - if (!(global.tune.no_zero_copy_fwd & NO_ZERO_COPY_FWD_QUIC_SND)) - se_fl_set(qcs->sd, SE_FL_MAY_FASTFWD_CONS); + if (!(global.tune.no_zero_copy_fwd & NO_ZERO_COPY_FWD_QUIC_SND)) + se_fl_set(qcs->sd, SE_FL_MAY_FASTFWD_CONS); + } /* Allocate transport layer stream descriptor. Only needed for TX. */ if (!quic_stream_is_uni(id) || !quic_stream_is_remote(qcc, id)) {