in src/vtok_rpc/src/transport.rs [94:126]
fn read_headers<R: BufRead>(reader: &mut R) -> Result<HttpHeaders> {
let mut content_length = None;
loop {
let mut ln = String::new();
reader.read_line(&mut ln).map_err(Error::IoError)?;
let ln = ln.as_str().trim();
if ln.len() == 0 {
break;
}
let mut iter = ln.split(": ");
match (iter.next(), iter.next()) {
(Some("Content-Length"), Some(len)) => {
let len = len.parse::<usize>().map_err(|_| Error::ParseError)?;
content_length = Some(len);
}
(Some("Content-Type"), Some("application/json")) => (),
_ => return Err(Error::ParseError),
}
}
match content_length {
Some(content_length) => {
if content_length > Self::MAX_BODY_LEN {
return Err(Error::MsgLen);
}
Ok(HttpHeaders { content_length })
}
_ => Err(Error::ParseError),
}
}