]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: handle all frame types on reception
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 15 Feb 2024 13:42:54 +0000 (14:42 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 15 Feb 2024 16:07:24 +0000 (17:07 +0100)
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().

src/quic_rx.c

index 9e55aa34edea524ee18e54b43bea03d7e8dc59af..3a1a35faa36da17ddf9d5417cdbf4f4ad03dae80 100644 (file)
@@ -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();
                }
        }