diff --git a/crates/http/src/workers/socket/connection.rs b/crates/http/src/workers/socket/connection.rs index 4ab82ab..a8cd846 100644 --- a/crates/http/src/workers/socket/connection.rs +++ b/crates/http/src/workers/socket/connection.rs @@ -389,7 +389,7 @@ where let mut position = RESPONSE_HEADER.len(); let body_len = response - .write(&mut &mut self.response_buffer[position..]) + .write_bytes(&mut &mut self.response_buffer[position..]) .map_err(ConnectionError::ResponseBufferWrite)?; position += body_len; diff --git a/crates/http/src/workers/socket/request.rs b/crates/http/src/workers/socket/request.rs index ec5f19f..f10950a 100644 --- a/crates/http/src/workers/socket/request.rs +++ b/crates/http/src/workers/socket/request.rs @@ -25,7 +25,7 @@ pub fn parse_request( match http_request.parse(buffer).with_context(|| "httparse")? { httparse::Status::Complete(_) => { let path = http_request.path.ok_or(anyhow::anyhow!("no http path"))?; - let request = Request::from_http_get_path(path)?; + let request = Request::parse_http_get_path(path)?; let opt_peer_ip = if config.network.runs_behind_reverse_proxy { let header_name = &config.network.reverse_proxy_ip_header_name; diff --git a/crates/http_load_test/src/network.rs b/crates/http_load_test/src/network.rs index 6c1ff12..f739a97 100644 --- a/crates/http_load_test/src/network.rs +++ b/crates/http_load_test/src/network.rs @@ -229,7 +229,7 @@ where } if let Some(body_start_index) = opt_body_start_index { - match Response::from_bytes(&interesting_bytes[body_start_index..]) { + match Response::parse_bytes(&interesting_bytes[body_start_index..]) { Ok(response) => { match response { Response::Announce(_) => { diff --git a/crates/http_protocol/benches/bench_announce_response_to_bytes.rs b/crates/http_protocol/benches/bench_announce_response_to_bytes.rs index b871cf0..146e168 100644 --- a/crates/http_protocol/benches/bench_announce_response_to_bytes.rs +++ b/crates/http_protocol/benches/bench_announce_response_to_bytes.rs @@ -33,7 +33,7 @@ pub fn bench(c: &mut Criterion) { b.iter(|| { buffer.set_position(0); - Response::write(black_box(&response), black_box(&mut buffer)).unwrap(); + Response::write_bytes(black_box(&response), black_box(&mut buffer)).unwrap(); }) }); } diff --git a/crates/http_protocol/benches/bench_request_from_bytes.rs b/crates/http_protocol/benches/bench_request_from_bytes.rs index c7d927f..b58c586 100644 --- a/crates/http_protocol/benches/bench_request_from_bytes.rs +++ b/crates/http_protocol/benches/bench_request_from_bytes.rs @@ -7,7 +7,7 @@ static INPUT: &[u8] = b"GET /announce?info_hash=%04%0bkV%3f%5cr%14%a6%b7%98%adC% pub fn bench(c: &mut Criterion) { c.bench_function("request-from-bytes", |b| { - b.iter(|| Request::from_bytes(black_box(INPUT))) + b.iter(|| Request::parse_bytes(black_box(INPUT))) }); } diff --git a/crates/http_protocol/src/request.rs b/crates/http_protocol/src/request.rs index 2fd175c..a462de7 100644 --- a/crates/http_protocol/src/request.rs +++ b/crates/http_protocol/src/request.rs @@ -21,7 +21,7 @@ pub struct AnnounceRequest { } impl AnnounceRequest { - fn write(&self, output: &mut W, url_suffix: &[u8]) -> ::std::io::Result<()> { + fn write_bytes(&self, output: &mut W, url_suffix: &[u8]) -> ::std::io::Result<()> { output.write_all(b"GET /announce")?; output.write_all(url_suffix)?; output.write_all(b"?info_hash=")?; @@ -67,7 +67,7 @@ impl AnnounceRequest { Ok(()) } - pub fn from_query_string(query_string: &str) -> anyhow::Result { + pub fn parse_query_string(query_string: &str) -> anyhow::Result { // -- Parse key-value pairs let mut opt_info_hash = None; @@ -173,7 +173,7 @@ pub struct ScrapeRequest { } impl ScrapeRequest { - fn write(&self, output: &mut W, url_suffix: &[u8]) -> ::std::io::Result<()> { + fn write_bytes(&self, output: &mut W, url_suffix: &[u8]) -> ::std::io::Result<()> { output.write_all(b"GET /scrape")?; output.write_all(url_suffix)?; output.write_all(b"?")?; @@ -196,7 +196,7 @@ impl ScrapeRequest { Ok(()) } - pub fn from_query_string(query_string: &str) -> anyhow::Result { + pub fn parse_query_string(query_string: &str) -> anyhow::Result { // -- Parse key-value pairs let mut info_hashes = Vec::new(); @@ -252,14 +252,14 @@ pub enum Request { impl Request { /// Parse Request from HTTP request bytes - pub fn from_bytes(bytes: &[u8]) -> anyhow::Result> { + pub fn parse_bytes(bytes: &[u8]) -> anyhow::Result> { let mut headers = [httparse::EMPTY_HEADER; 16]; let mut http_request = httparse::Request::new(&mut headers); match http_request.parse(bytes) { Ok(httparse::Status::Complete(_)) => { if let Some(path) = http_request.path { - Self::from_http_get_path(path).map(Some) + Self::parse_http_get_path(path).map(Some) } else { Err(anyhow::anyhow!("no http path")) } @@ -282,7 +282,7 @@ impl Request { /// UTF-8 string, meaning that non-ascii bytes are invalid characters. /// Therefore, these bytes must be converted to their equivalent multi-byte /// UTF-8 encodings. - pub fn from_http_get_path(path: &str) -> anyhow::Result { + pub fn parse_http_get_path(path: &str) -> anyhow::Result { ::log::debug!("request GET path: {}", path); let mut split_parts = path.splitn(2, '?'); @@ -291,11 +291,11 @@ impl Request { let query_string = split_parts.next().with_context(|| "no query string")?; if location == "/announce" { - Ok(Request::Announce(AnnounceRequest::from_query_string( + Ok(Request::Announce(AnnounceRequest::parse_query_string( query_string, )?)) } else if location == "/scrape" { - Ok(Request::Scrape(ScrapeRequest::from_query_string( + Ok(Request::Scrape(ScrapeRequest::parse_query_string( query_string, )?)) } else { @@ -305,8 +305,8 @@ impl Request { pub fn write(&self, output: &mut W, url_suffix: &[u8]) -> ::std::io::Result<()> { match self { - Self::Announce(r) => r.write(output, url_suffix), - Self::Scrape(r) => r.write(output, url_suffix), + Self::Announce(r) => r.write_bytes(output, url_suffix), + Self::Scrape(r) => r.write_bytes(output, url_suffix), } } } @@ -351,7 +351,7 @@ mod tests { bytes.extend_from_slice(ANNOUNCE_REQUEST_PATH.as_bytes()); bytes.extend_from_slice(b" HTTP/1.1\r\n\r\n"); - let parsed_request = Request::from_bytes(&bytes[..]).unwrap().unwrap(); + let parsed_request = Request::parse_bytes(&bytes[..]).unwrap().unwrap(); let reference_request = get_reference_announce_request(); assert_eq!(parsed_request, reference_request); @@ -365,7 +365,7 @@ mod tests { bytes.extend_from_slice(SCRAPE_REQUEST_PATH.as_bytes()); bytes.extend_from_slice(b" HTTP/1.1\r\n\r\n"); - let parsed_request = Request::from_bytes(&bytes[..]).unwrap().unwrap(); + let parsed_request = Request::parse_bytes(&bytes[..]).unwrap().unwrap(); let reference_request = Request::Scrape(ScrapeRequest { info_hashes: vec![InfoHash(REFERENCE_INFO_HASH)], }); @@ -432,7 +432,7 @@ mod tests { request.write(&mut bytes, &[]).unwrap(); - let parsed_request = Request::from_bytes(&bytes[..]).unwrap().unwrap(); + let parsed_request = Request::parse_bytes(&bytes[..]).unwrap().unwrap(); let success = request == parsed_request; diff --git a/crates/http_protocol/src/response.rs b/crates/http_protocol/src/response.rs index ed36b73..a3b0d17 100644 --- a/crates/http_protocol/src/response.rs +++ b/crates/http_protocol/src/response.rs @@ -61,7 +61,7 @@ pub struct AnnounceResponse { } impl AnnounceResponse { - pub fn write(&self, output: &mut W) -> ::std::io::Result { + pub fn write_bytes(&self, output: &mut W) -> ::std::io::Result { let mut bytes_written = 0usize; bytes_written += output.write(b"d8:completei")?; @@ -124,7 +124,7 @@ pub struct ScrapeResponse { } impl ScrapeResponse { - pub fn write(&self, output: &mut W) -> ::std::io::Result { + pub fn write_bytes(&self, output: &mut W) -> ::std::io::Result { let mut bytes_written = 0usize; bytes_written += output.write(b"d5:filesd")?; @@ -160,7 +160,7 @@ impl FailureResponse { } } - pub fn write(&self, output: &mut W) -> ::std::io::Result { + pub fn write_bytes(&self, output: &mut W) -> ::std::io::Result { let mut bytes_written = 0usize; let reason_bytes = self.failure_reason.as_bytes(); @@ -184,14 +184,14 @@ pub enum Response { } impl Response { - pub fn write(&self, output: &mut W) -> ::std::io::Result { + pub fn write_bytes(&self, output: &mut W) -> ::std::io::Result { match self { - Response::Announce(r) => r.write(output), - Response::Failure(r) => r.write(output), - Response::Scrape(r) => r.write(output), + Response::Announce(r) => r.write_bytes(output), + Response::Failure(r) => r.write_bytes(output), + Response::Scrape(r) => r.write_bytes(output), } } - pub fn from_bytes(bytes: &[u8]) -> Result { + pub fn parse_bytes(bytes: &[u8]) -> Result { ::serde_bencode::from_bytes(bytes) } } @@ -285,7 +285,7 @@ mod tests { let mut hand_written = Vec::new(); - response.write(&mut hand_written).unwrap(); + response.write_bytes(&mut hand_written).unwrap(); let success = hand_written == reference; @@ -303,7 +303,7 @@ mod tests { let mut hand_written = Vec::new(); - response.write(&mut hand_written).unwrap(); + response.write_bytes(&mut hand_written).unwrap(); let success = hand_written == reference; @@ -321,7 +321,7 @@ mod tests { let mut hand_written = Vec::new(); - response.write(&mut hand_written).unwrap(); + response.write_bytes(&mut hand_written).unwrap(); let success = hand_written == reference;