diff --git a/src/buffer.rs b/src/buffer.rs index be98f3607f..dde8eb9d13 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -27,7 +27,12 @@ impl BufReader { pub fn get_mut(&mut self) -> &mut R { &mut self.inner } pub fn get_buf(&self) -> &[u8] { - self.buf.get_ref() + let pos = self.buf.position() as usize; + if pos < self.buf.get_ref().len() { + &self.buf.get_ref()[pos..] + } else { + &[] + } } pub fn into_inner(self) -> R { self.inner } @@ -93,3 +98,18 @@ fn reserve(v: &mut Vec) { v.reserve(cmp::min(cap * 4, MAX_BUFFER_SIZE) - cap); } } + +#[cfg(test)] +mod tests { + + use std::io::BufRead; + use super::BufReader; + + #[test] + fn test_consume_and_get_buf() { + let mut rdr = BufReader::new(&b"foo bar baz"[..]); + rdr.read_into_buf().unwrap(); + rdr.consume(8); + assert_eq!(rdr.get_buf(), b"baz"); + } +} diff --git a/src/server/mod.rs b/src/server/mod.rs index 4a78d6ebff..61e9ade6fe 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -228,7 +228,6 @@ mod tests { Host: example.domain\r\n\ Expect: 100-continue\r\n\ Content-Length: 10\r\n\ - Connection: close\r\n\ \r\n\ 1234567890\ ");