mirror of
https://github.com/denoland/deno.git
synced 2024-12-24 08:09:08 -05:00
cleanup(ext/http): simplify cookie header handling (#11704)
cleanup(ext/http): simplify cookie header handling Use `Vec::join` instead of essentially reimplementing it. There should be no meaningful performance delta
This commit is contained in:
parent
fb135dc3e4
commit
c87b13e745
1 changed files with 3 additions and 14 deletions
|
@ -293,15 +293,13 @@ fn req_headers(
|
||||||
// mangled by the `Headers` object in JS. What we do is take all cookie
|
// mangled by the `Headers` object in JS. What we do is take all cookie
|
||||||
// headers and concat them into a single cookie header, seperated by
|
// headers and concat them into a single cookie header, seperated by
|
||||||
// semicolons.
|
// semicolons.
|
||||||
let mut total_cookie_length = 0;
|
let cookie_sep = "; ".as_bytes();
|
||||||
let mut cookies = vec![];
|
let mut cookies = vec![];
|
||||||
|
|
||||||
let mut headers = Vec::with_capacity(req.headers().len());
|
let mut headers = Vec::with_capacity(req.headers().len());
|
||||||
for (name, value) in req.headers().iter() {
|
for (name, value) in req.headers().iter() {
|
||||||
if name == hyper::header::COOKIE {
|
if name == hyper::header::COOKIE {
|
||||||
let bytes = value.as_bytes();
|
cookies.push(value.as_bytes());
|
||||||
total_cookie_length += bytes.len();
|
|
||||||
cookies.push(bytes);
|
|
||||||
} else {
|
} else {
|
||||||
let name: &[u8] = name.as_ref();
|
let name: &[u8] = name.as_ref();
|
||||||
let value = value.as_bytes();
|
let value = value.as_bytes();
|
||||||
|
@ -310,18 +308,9 @@ fn req_headers(
|
||||||
}
|
}
|
||||||
|
|
||||||
if !cookies.is_empty() {
|
if !cookies.is_empty() {
|
||||||
let cookie_count = cookies.len();
|
|
||||||
total_cookie_length += (cookie_count * 2) - 2;
|
|
||||||
let mut bytes = Vec::with_capacity(total_cookie_length);
|
|
||||||
for (i, cookie) in cookies.into_iter().enumerate() {
|
|
||||||
bytes.extend(cookie);
|
|
||||||
if i != cookie_count - 1 {
|
|
||||||
bytes.extend("; ".as_bytes());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
headers.push((
|
headers.push((
|
||||||
ByteString("cookie".as_bytes().to_owned()),
|
ByteString("cookie".as_bytes().to_owned()),
|
||||||
ByteString(bytes),
|
ByteString(cookies.join(cookie_sep)),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue