From: Amaury Denoyelle Date: Thu, 15 Feb 2024 13:42:54 +0000 (+0100) Subject: MINOR: quic: handle all frame types on reception X-Git-Tag: v3.0-dev4~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=80b82c2192368e022487390f928c84a25ca7cd79;p=thirdparty%2Fhaproxy.git MINOR: quic: handle all frame types on reception Ensure every frame types are handled in qc_parse_pkt_frms. Add an ABORT_NOW on the default case. This is safe as an unknown frame must be rejected prior via qc_parse_frm(). --- diff --git a/src/quic_rx.c b/src/quic_rx.c index 9e55aa34ed..3a1a35faa3 100644 --- a/src/quic_rx.c +++ b/src/quic_rx.c @@ -882,6 +882,7 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, case QUIC_FT_PING: break; case QUIC_FT_ACK: + case QUIC_FT_ACK_ECN: { unsigned int rtt_sample; rtt_sample = UINT_MAX; @@ -924,6 +925,9 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, if (!qc_handle_crypto_frm(qc, &frm.crypto, pkt, qel, &fast_retrans)) goto leave; break; + case QUIC_FT_NEW_TOKEN: + /* TODO */ + break; case QUIC_FT_STREAM_8 ... QUIC_FT_STREAM_F: { struct qf_stream *strm_frm = &frm.stream; @@ -1023,6 +1027,10 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, } break; } + case QUIC_FT_PATH_CHALLENGE: + case QUIC_FT_PATH_RESPONSE: + /* TODO */ + break; case QUIC_FT_CONNECTION_CLOSE: case QUIC_FT_CONNECTION_CLOSE_APP: /* Increment the error counters */ @@ -1054,8 +1062,8 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, qc->state = QUIC_HS_ST_CONFIRMED; break; default: - TRACE_ERROR("unknosw frame type", QUIC_EV_CONN_PRSHPKT, qc); - goto leave; + /* Unknown frame type must be rejected by qc_parse_frm(). */ + ABORT_NOW(); } }