BUG/MINOR: quic: acknowledge STREAM frame even if MUX is released
When the MUX is freed, the quic-conn layer may stay active until all
streams acknowledgment are processed. In this interval, if a new stream
is opened by the client, the quic-conn is thus now responsible to handle
it. This is done by the emission of a STOP_SENDING + RESET_STREAM.
Prior to this patch, the received packet was not acknowledged. This is
undesirable if the quic-conn is able to properly reject the request as
this can lead to unneeded retransmission from the client.
This must be backported up to 2.6.
(cherry picked from commit 156a89aef8
)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 49c35005d7f488524b009aa8ade7e8946660bd0b)
Signed-off-by: Amaury Denoyelle <adenoyelle@haproxy.com>
This commit is contained in:
parent
03414c0bd1
commit
364f770151
@ -2937,11 +2937,16 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt,
|
||||
else {
|
||||
TRACE_DEVEL("No mux for new stream", QUIC_EV_CONN_PRSHPKT, qc);
|
||||
if (qc->app_ops == &h3_ops) {
|
||||
if (!qc_h3_request_reject(qc, stream->id))
|
||||
TRACE_ERROR("could not enqueue STOP_SENDING frame", QUIC_EV_CONN_PRSHPKT, qc);
|
||||
if (!qc_h3_request_reject(qc, stream->id)) {
|
||||
TRACE_ERROR("error on request rejection", QUIC_EV_CONN_PRSHPKT, qc);
|
||||
/* This packet will not be acknowledged */
|
||||
goto leave;
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* This packet will not be acknowledged */
|
||||
goto leave;
|
||||
}
|
||||
/* This packet will not be acknowledged */
|
||||
goto leave;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user