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(_) => {}

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…