From f736d988f829e1c9ca710dbf80e4f2fb24ce3b58 Mon Sep 17 00:00:00 2001 From: Robert Kopaczewski Date: Tue, 26 Nov 2024 11:25:59 +0100 Subject: [PATCH 1/3] fix: content length assertion for HEAD --- src/proto/h1/role.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/proto/h1/role.rs b/src/proto/h1/role.rs index 4f04acec96..1abb71fbf7 100644 --- a/src/proto/h1/role.rs +++ b/src/proto/h1/role.rs @@ -701,7 +701,9 @@ impl Server { // same to help developers find bugs. #[cfg(debug_assertions)] { - if let Some(len) = headers::content_length_parse(&value) { + if let Some(len) = headers::content_length_parse(&value) + && (msg.req_method != &Some(Method::HEAD) || known_len != 0) + { assert!( len == known_len, "payload claims content-length of {}, custom content-length header claims {}", From bce9ff2e8204266730c36e11670433e31f8f91ae Mon Sep 17 00:00:00 2001 From: Robert Kopaczewski Date: Tue, 26 Nov 2024 13:45:40 +0100 Subject: [PATCH 2/3] move if to inner --- src/proto/h1/role.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/proto/h1/role.rs b/src/proto/h1/role.rs index 1abb71fbf7..dbb4e8f761 100644 --- a/src/proto/h1/role.rs +++ b/src/proto/h1/role.rs @@ -701,15 +701,15 @@ impl Server { // same to help developers find bugs. #[cfg(debug_assertions)] { - if let Some(len) = headers::content_length_parse(&value) - && (msg.req_method != &Some(Method::HEAD) || known_len != 0) - { - assert!( + if let Some(len) = headers::content_length_parse(&value) { + if (msg.req_method != &Some(Method::HEAD) || known_len != 0) { + assert!( len == known_len, "payload claims content-length of {}, custom content-length header claims {}", known_len, len, ); + } } } From b65d2a8c8b5079ba4e9f02846f544221b7f594e9 Mon Sep 17 00:00:00 2001 From: Robert Kopaczewski Date: Tue, 26 Nov 2024 14:30:56 +0100 Subject: [PATCH 3/3] lint --- src/proto/h1/role.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/proto/h1/role.rs b/src/proto/h1/role.rs index dbb4e8f761..fc90819c8d 100644 --- a/src/proto/h1/role.rs +++ b/src/proto/h1/role.rs @@ -702,7 +702,7 @@ impl Server { #[cfg(debug_assertions)] { if let Some(len) = headers::content_length_parse(&value) { - if (msg.req_method != &Some(Method::HEAD) || known_len != 0) { + if msg.req_method != &Some(Method::HEAD) || known_len != 0 { assert!( len == known_len, "payload claims content-length of {}, custom content-length header claims {}",