Skip to content

Commit 63a4620

Browse files
committed
Allow multiline headers
1 parent ccdee23 commit 63a4620

File tree

2 files changed

+13
-19
lines changed

2 files changed

+13
-19
lines changed

src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,7 @@ impl<'x> HeaderValue<'x> {
682682
pub fn as_text_ref(&self) -> Option<&str> {
683683
match *self {
684684
HeaderValue::Text(ref s) => Some(s),
685-
HeaderValue::TextList(ref l) => l.get(0)?.as_ref().into(),
685+
HeaderValue::TextList(ref l) => l.last()?.as_ref().into(),
686686
_ => None,
687687
}
688688
}

src/parsers/header.rs

+12-18
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ pub fn parse_headers<'x>(
4545

4646
match result {
4747
HeaderParserResult::Rfc(name) => {
48-
let (is_many, parser) = HDR_PARSER[name as usize];
48+
let (_, parser) = HDR_PARSER[name as usize];
4949

5050
let from_offset = stream.pos;
5151
let value = parser(stream);
@@ -58,25 +58,19 @@ pub fn parse_headers<'x>(
5858
});
5959

6060
if !value.is_empty() {
61-
if is_many {
62-
match headers_rfc.entry(name) {
63-
Entry::Occupied(mut e) => {
64-
if let HeaderValue::Collection(col) = e.get_mut() {
65-
col.push(value);
66-
} else {
67-
let old_value = e.remove();
68-
headers_rfc.insert(
69-
name,
70-
HeaderValue::Collection(vec![old_value, value]),
71-
);
72-
}
73-
}
74-
Entry::Vacant(e) => {
75-
e.insert(value);
61+
match headers_rfc.entry(name) {
62+
Entry::Occupied(mut e) => {
63+
if let HeaderValue::Collection(col) = e.get_mut() {
64+
col.push(value);
65+
} else {
66+
let old_value = e.remove();
67+
headers_rfc
68+
.insert(name, HeaderValue::Collection(vec![old_value, value]));
7669
}
7770
}
78-
} else {
79-
headers_rfc.insert(name, value);
71+
Entry::Vacant(e) => {
72+
e.insert(value);
73+
}
8074
}
8175
}
8276
}

0 commit comments

Comments
 (0)