mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-24 20:31:00 +01:00
BUG/MINOR: quic: 1RTT packets ignored after mux was released
We must be able to handle 1RTT packets after the mux has terminated its job (qc->mux_state == QC_MUX_RELEASED). So the condition (qc->mux_state != QC_MUX_READY) in qc_qel_may_rm_hp() is not correct when we want to wait for the mux to be started. Add a check in qc_parse_pkt_frms() to ensure is started before calling it. All the STREAM frames will be ignored when the mux will be released.
This commit is contained in:
parent
2899fe2460
commit
12aa26b6fd
@ -2428,6 +2428,10 @@ 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. */
|
||||
if (qc->mux_state != QC_MUX_READY)
|
||||
break;
|
||||
|
||||
if (!qc_handle_strm_frm(pkt, stream, qc))
|
||||
goto err;
|
||||
|
||||
@ -3374,7 +3378,7 @@ static int qc_qel_may_rm_hp(struct quic_conn *qc, struct quic_enc_level *qel)
|
||||
|
||||
/* check if the connection layer is ready before using app level */
|
||||
if ((tel == QUIC_TLS_ENC_LEVEL_APP || tel == QUIC_TLS_ENC_LEVEL_EARLY_DATA) &&
|
||||
qc->mux_state != QC_MUX_READY)
|
||||
qc->mux_state == QC_MUX_NULL)
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user