From 595df90290bf0dda20facfd139de5f8bf2e2e0bd Mon Sep 17 00:00:00 2001 From: evolix1 Date: Tue, 29 May 2018 21:42:14 +0100 Subject: [PATCH] Simplify starter byte without prefix --- quinn-h3/src/qpack/decoder.rs | 8 +++----- quinn-h3/src/qpack/dump.rs | 8 +++----- quinn-h3/src/qpack/iocontext.rs | 4 ++++ quinn-h3/src/qpack/parser.rs | 9 +++------ 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/quinn-h3/src/qpack/decoder.rs b/quinn-h3/src/qpack/decoder.rs index 4cf92de39..8b6fb6ce6 100644 --- a/quinn-h3/src/qpack/decoder.rs +++ b/quinn-h3/src/qpack/decoder.rs @@ -72,7 +72,7 @@ impl Decoder { pub fn feed_stream(&mut self, buf: &mut T) -> Result<(), Error> { let block_len = Parser::new(buf) - .integer(StarterByte::prefix(8).expect("valid starter byte")) + .integer(StarterByte::noprefix()) .map_err(|_| Error::InvalidIntegerPrimitive)?; if block_len as usize != buf.remaining() { @@ -105,8 +105,7 @@ impl Decoder { .expect("valid starter byte")) .map_err(|_| Error::InvalidIntegerPrimitive)? as usize; let value = parser - .string(StarterByte::prefix(8) - .expect("valid starter byte")) + .string(StarterByte::noprefix()) .map_err(|_| Error::InvalidStringPrimitive)?; let name = @@ -137,8 +136,7 @@ impl Decoder { .expect("valid starter byte")) .map_err(|_| Error::InvalidStringPrimitive)?; let value = parser - .string(StarterByte::prefix(8) - .expect("valid starter byte")) + .string(StarterByte::noprefix()) .map_err(|_| Error::InvalidStringPrimitive)?; self.put_field(HeaderField::new(name, value)); diff --git a/quinn-h3/src/qpack/dump.rs b/quinn-h3/src/qpack/dump.rs index 0e8edfec9..37c935d48 100644 --- a/quinn-h3/src/qpack/dump.rs +++ b/quinn-h3/src/qpack/dump.rs @@ -82,9 +82,7 @@ impl<'a> Dump<'a> { } let _ = self.put_byte(first_byte as u8)?; - let _ = self.integer( - input.len(), - StarterByte::prefix(8).expect("valid starter byte"))?; + let _ = self.integer(input.len(), StarterByte::noprefix())?; } self.buf.write(&input[..]).map(|_| ()) @@ -167,7 +165,7 @@ mod tests { #[test] fn test_write_ascii_string() { let text = b"Testing ascii"; - let starter = StarterByte::prefix(8).expect("valid starter byte"); + let starter = StarterByte::noprefix(); let expected: [u8; 14] = [ // not huffman, size 0 | 13, @@ -205,7 +203,7 @@ mod tests { #[test] fn test_write_empty_string() { let text = b""; - let starter = StarterByte::prefix(8).expect("valid starter byte"); + let starter = StarterByte::noprefix(); let expected: [u8; 1] = [ 0 | 0 // not huffman, size ]; diff --git a/quinn-h3/src/qpack/iocontext.rs b/quinn-h3/src/qpack/iocontext.rs index 7ebe8e40b..4881eb632 100644 --- a/quinn-h3/src/qpack/iocontext.rs +++ b/quinn-h3/src/qpack/iocontext.rs @@ -19,6 +19,10 @@ pub struct StarterByte { impl StarterByte { + pub fn noprefix() -> StarterByte { + StarterByte { prefix: 8, mask: 255, byte: None } + } + pub fn prefix(prefix: usize) -> Result { Self::build(prefix, None) } diff --git a/quinn-h3/src/qpack/parser.rs b/quinn-h3/src/qpack/parser.rs index 938d6d039..631dfda51 100644 --- a/quinn-h3/src/qpack/parser.rs +++ b/quinn-h3/src/qpack/parser.rs @@ -220,8 +220,7 @@ mod tests { let mut cursor = Cursor::new(&bytes); let mut parser = Parser::new(&mut cursor); - let res = parser.string(StarterByte::prefix(8) - .expect("valid starter byte")); + let res = parser.string(StarterByte::noprefix()); assert_eq!(res, Ok(Vec::from(text))); } @@ -238,8 +237,7 @@ mod tests { let mut cursor = Cursor::new(&bytes); let mut parser = Parser::new(&mut cursor); - let res = parser.string(StarterByte::prefix(8) - .expect("valid starter byte")); + let res = parser.string(StarterByte::noprefix()); assert_eq!(res, Ok(Vec::new())); } @@ -258,8 +256,7 @@ mod tests { let mut cursor = Cursor::new(&bytes); let mut parser = Parser::new(&mut cursor); - let res = parser.string(StarterByte::prefix(8) - .expect("valid starter byte")); + let res = parser.string(StarterByte::noprefix()); assert_eq!(res, Err(Error::TooShortBufferForString(14))); }