mirror of
https://github.com/haproxy/haproxy.git
synced 2026-03-06 07:10:43 -05:00
MEDIUM: quic: do not ACK packet with STREAM if MUX not present
If a packet contains a STREAM frame but the MUX is not allocated, the frame cannot be enqueued. According to the RFC9000, we must not acknowledge the packet under this condition. This may prevents a bug with firefox which keeps trying on refreshing the web page. This issue has already been detected before closing state implementation : haproxy wasn't emitted CONNECTION_CLOSE and keeps acknowledge STREAM frames despite not handle them. In the future, it might be necessary to respond with a CONNECTION_CLOSE if the MUX has already been freed.
This commit is contained in:
parent
4173f4ea29
commit
d46e335683
1 changed files with 5 additions and 2 deletions
|
|
@ -2738,9 +2738,12 @@ static int qc_parse_pkt_frms(struct quic_rx_packet *pkt, struct ssl_sock_ctx *ct
|
|||
} else if (!(stream->id & QUIC_STREAM_FRAME_ID_INITIATOR_BIT))
|
||||
goto err;
|
||||
|
||||
/* At the application layer the connection may have already been closed. */
|
||||
/* The upper layer may not be allocated.
|
||||
*
|
||||
* TODO emit a CONNECTION_CLOSE if mux already freed.
|
||||
*/
|
||||
if (qc->mux_state != QC_MUX_READY)
|
||||
break;
|
||||
goto err;
|
||||
|
||||
if (!qc_handle_strm_frm(pkt, stream, qc))
|
||||
goto err;
|
||||
|
|
|
|||
Loading…
Reference in a new issue