relax response parsing

fixes #2103
This commit is contained in:
Rob Ede 2022-03-08 01:07:25 +00:00
parent 5919b84ea2
commit 3821ca1063
No known key found for this signature in database
GPG Key ID: 97C636207D3EF933
3 changed files with 9 additions and 2 deletions

View File

@ -1,6 +1,10 @@
# Changes
## Unreleased - 2021-xx-xx
### Fixed
- Allow spaces between header name and colon when parsing responses. [#2684]
[#2684]: https://github.com/actix/actix-web/issues/2684
## 3.0.2 - 2022-03-05

View File

@ -295,8 +295,11 @@ impl MessageType for ResponseHead {
let (len, ver, status, h_len) = {
let mut parsed: [httparse::Header<'_>; MAX_HEADERS] = EMPTY_HEADER_ARRAY;
let mut config = httparse::ParserConfig::default();
config.allow_spaces_after_header_name_in_responses(true);
let mut res = httparse::Response::new(&mut parsed);
match res.parse(src)? {
match config.parse_response(&mut res, src)? {
httparse::Status::Complete(len) => {
let version = if res.version.unwrap() == 1 {
Version::HTTP_11

View File

@ -505,7 +505,7 @@ impl fmt::Debug for ClientRequest {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
writeln!(
f,
"\nClientRequest {:?} {}:{}",
"\nClientRequest {:?} {} {}",
self.head.version, self.head.method, self.head.uri
)?;
writeln!(f, " headers:")?;