in src/codec/thrift_cache.rs [570:592]
fn decode(&self, buffer: &mut Session) -> Result<(), ParseError> {
// no-copy borrow as a slice
let buf: &[u8] = (*buffer).buffer();
let bytes = buf.len() as u32;
if bytes > 4 {
let length = u32::from_be_bytes([buf[0], buf[1], buf[2], buf[3]]);
match length.checked_add(4_u32) {
Some(b) => {
if b == bytes {
buffer.consume(b as usize);
Ok(())
} else {
Err(ParseError::Incomplete)
}
}
None => Err(ParseError::Unknown),
}
} else {
Err(ParseError::Incomplete)
}
}