From 68adc87bd20f0b09a95871ead88a558f4c94e788 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Mon, 17 Feb 2025 15:04:59 +0100 Subject: [PATCH] quic: parse ack frame number 3 cf rfc9000 section 19.3. ACK Frames Ticket: 7556 --- rust/src/quic/frames.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/rust/src/quic/frames.rs b/rust/src/quic/frames.rs index a3afc27567..c91b5b8a2e 100644 --- a/rust/src/quic/frames.rs +++ b/rust/src/quic/frames.rs @@ -198,6 +198,14 @@ fn parse_ack_frame(input: &[u8]) -> IResult<&[u8], Frame, QuicError> { )) } +fn parse_ack3_frame(input: &[u8]) -> IResult<&[u8], Frame, QuicError> { + let (rest, ack) = parse_ack_frame(input)?; + let (rest, _ect0_count) = quic_var_uint(rest)?; + let (rest, _ect1_count) = quic_var_uint(rest)?; + let (rest, _ecn_count) = quic_var_uint(rest)?; + Ok((rest, ack)) +} + #[derive(Clone, Debug, PartialEq, Eq)] pub struct QuicTlsExtension { pub etype: TlsExtensionType, @@ -531,6 +539,7 @@ impl Frame { 0x00 => parse_padding_frame(rest)?, 0x01 => (rest, Frame::Ping), 0x02 => parse_ack_frame(rest)?, + 0x03 => parse_ack3_frame(rest)?, 0x06 => parse_crypto_frame(rest)?, 0x08 => parse_crypto_stream_frame(rest)?, _ => ([].as_ref(), Frame::Unknown(rest.to_vec())),