Merge pull request #2862 from arik-so/arik/2024/01/http-error-message-fix

Improve error message for invalid response lengths
This commit is contained in:
Matt Corallo 2024-01-30 23:36:36 +00:00 committed by GitHub
commit 5bf58f0d33
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -288,7 +288,7 @@ impl HttpClient {
HttpMessageLength::Empty => { Vec::new() }, HttpMessageLength::Empty => { Vec::new() },
HttpMessageLength::ContentLength(length) => { HttpMessageLength::ContentLength(length) => {
if length == 0 || length > MAX_HTTP_MESSAGE_BODY_SIZE { if length == 0 || length > MAX_HTTP_MESSAGE_BODY_SIZE {
return Err(std::io::Error::new(std::io::ErrorKind::InvalidData, "out of range")) return Err(std::io::Error::new(std::io::ErrorKind::InvalidData, format!("invalid response length: {} bytes", length)));
} else { } else {
let mut content = vec![0; length]; let mut content = vec![0; length];
#[cfg(feature = "tokio")] #[cfg(feature = "tokio")]
@ -727,7 +727,7 @@ pub(crate) mod client_tests {
match client.get::<BinaryResponse>("/foo", "foo.com").await { match client.get::<BinaryResponse>("/foo", "foo.com").await {
Err(e) => { Err(e) => {
assert_eq!(e.kind(), std::io::ErrorKind::InvalidData); assert_eq!(e.kind(), std::io::ErrorKind::InvalidData);
assert_eq!(e.get_ref().unwrap().to_string(), "out of range"); assert_eq!(e.get_ref().unwrap().to_string(), "invalid response length: 8032001 bytes");
}, },
Ok(_) => panic!("Expected error"), Ok(_) => panic!("Expected error"),
} }