avoid panic for headers
This commit is contained in:
@@ -119,7 +119,7 @@ impl Agent {
|
|||||||
{
|
{
|
||||||
add_header(
|
add_header(
|
||||||
&mut self.headers,
|
&mut self.headers,
|
||||||
Header::new(&header.into(), &value.into()).expect("Failed to parse header"),
|
Header::new(&header.into(), &value.into()),
|
||||||
);
|
);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use ascii::AsciiString;
|
use ascii::{AsAsciiStr, AsciiString};
|
||||||
use error::Error;
|
use error::Error;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
@@ -16,11 +16,11 @@ impl ::std::fmt::Debug for Header {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Header {
|
impl Header {
|
||||||
pub fn new(name: &str, value: &str) -> Result<Self, Error> {
|
pub fn new(name: &str, value: &str) -> Self {
|
||||||
let line =
|
let s = format!("{}: {}", name, value);
|
||||||
AsciiString::from_str(&format!("{}: {}", name, value)).map_err(|_| Error::BadHeader)?;
|
let line = unsafe { s.as_ascii_str_unchecked().to_owned() };
|
||||||
let index = name.len();
|
let index = name.len();
|
||||||
Ok(Header { line, index })
|
Header { line, index }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The header name.
|
/// The header name.
|
||||||
|
|||||||
@@ -190,10 +190,7 @@ impl Request {
|
|||||||
K: Into<String>,
|
K: Into<String>,
|
||||||
V: Into<String>,
|
V: Into<String>,
|
||||||
{
|
{
|
||||||
add_header(
|
add_header(&mut self.headers, Header::new(&header.into(), &value.into()));
|
||||||
&mut self.headers,
|
|
||||||
Header::new(&header.into(), &value.into()).expect("Failed to parse header"),
|
|
||||||
);
|
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ impl Unit {
|
|||||||
// also don't write this if the user has set it themselves
|
// also don't write this if the user has set it themselves
|
||||||
if !is_chunked && !req.has("content-length") {
|
if !is_chunked && !req.has("content-length") {
|
||||||
if let Some(size) = body.size {
|
if let Some(size) = body.size {
|
||||||
extra.push(Header::new("Content-Length", &format!("{}", size)).unwrap());
|
extra.push(Header::new("Content-Length", &format!("{}", size)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ impl Unit {
|
|||||||
let password = url.password().unwrap_or("");
|
let password = url.password().unwrap_or("");
|
||||||
if (username != "" || password != "") && !req.has("authorization") {
|
if (username != "" || password != "") && !req.has("authorization") {
|
||||||
let encoded = base64::encode(&format!("{}:{}", username, password));
|
let encoded = base64::encode(&format!("{}:{}", username, password));
|
||||||
extra.push(Header::new("Authorization", &format!("Basic {}", encoded)).unwrap());
|
extra.push(Header::new("Authorization", &format!("Basic {}", encoded)));
|
||||||
}
|
}
|
||||||
|
|
||||||
extra
|
extra
|
||||||
@@ -204,10 +204,8 @@ fn match_cookies<'a>(jar: &'a CookieJar, domain: &str, path: &str, is_secure: bo
|
|||||||
let name = c.name().to_string();
|
let name = c.name().to_string();
|
||||||
let value = c.value().to_string();
|
let value = c.value().to_string();
|
||||||
let nameval = Cookie::new(name, value).encoded().to_string();
|
let nameval = Cookie::new(name, value).encoded().to_string();
|
||||||
Header::new("Cookie", &nameval).ok()
|
Header::new("Cookie", &nameval)
|
||||||
})
|
})
|
||||||
.filter(|o| o.is_some())
|
|
||||||
.map(|o| o.unwrap())
|
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user