mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-25 14:12:13 +00: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
@ -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 New Issue
Block a user