From 4b774b486bf12b29053274648e105e7ed55134dd Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Fri, 2 May 2025 08:49:04 +0300 Subject: [PATCH] eris: fix tests --- src/main.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 197c0a9..387e886 100644 --- a/src/main.rs +++ b/src/main.rs @@ -388,16 +388,20 @@ fn find_header_end(data: &[u8]) -> Option { // Extract path from raw request data fn extract_path_from_request(data: &[u8]) -> Option<&str> { - let request_line = data + // Get first line from request + let first_line = data .split(|&b| b == b'\r' || b == b'\n') .next() .filter(|line| !line.is_empty())?; - let mut parts = request_line.split(|&b| b == b' '); - let _ = parts.next()?; // Skip HTTP method - let path = parts.next()?; + // Split by spaces and ensure we have at least 3 parts + let parts: Vec<&[u8]> = first_line.split(|&b| b == b' ').collect(); + if parts.len() < 3 || !parts[2].starts_with(b"HTTP/") { + return None; + } - std::str::from_utf8(path).ok() + // Return the path (second element) + std::str::from_utf8(parts[1]).ok() } // Extract header value from raw request data @@ -1418,7 +1422,7 @@ mod tests { #[test] fn test_find_header_end() { let data = b"GET / HTTP/1.1\r\nHost: example.com\r\nUser-Agent: test\r\n\r\nBody content"; - assert_eq!(find_header_end(data), Some(53)); + assert_eq!(find_header_end(data), Some(55)); let incomplete = b"GET / HTTP/1.1\r\nHost: example.com\r\n"; assert_eq!(find_header_end(incomplete), None);