INNER CODE UNIT · Rust
read_response
eepnet/emissary · emissary-cli/src/proxy/http/mod.rs:448
async fn read_response(mut stream: TcpStream) -> String {
let mut buffer = vec![0u8; 8192];
let mut nread = 0usize;
// read from `stream` until complete request has been received
loop {
nread += match stream.read(&mut buffer[nread..]).await {
Err(_) => panic!("i/o error"),
Ok(0) => panic!("read zero"),
Ok(nread) => nread,
};
let mut headers = [httparse::EMPTY_HEADER; 64];
match httparse::Response::new(&mut headers).parse(&buffer[..nread]) {
Err(error) => panic!("failed to parse response: {error:?}"),
Ok(response) if response.is_complete() =>
return std::str::from_utf8(&buffer[..nread]).unwrap().to_owned(),
Ok(_) => {}