Skip to content

Commit 0937e60

Browse files
committed
Change signature of insertion/appending of headers
Currently the insert and append functions on Headers panics on illegal header value encoding. This commit exposes that failure mode to the library users by wrapping the return in a result instead. This change exposes a possible optimization in places where insert/append is called with values known to be safe by creating unsafe insertion/appending functions. This commit does not implement any such extensions.
1 parent 0127e5b commit 0937e60

30 files changed

+167
-82
lines changed

src/auth/authorization.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,9 @@ mod test {
129129
#[test]
130130
fn bad_request_on_parse_error() {
131131
let mut headers = Headers::new();
132-
headers.insert(AUTHORIZATION, "<nori ate the tag. yum.>");
132+
headers
133+
.insert(AUTHORIZATION, "<nori ate the tag. yum.>")
134+
.unwrap();
133135
let err = Authorization::from_headers(headers).unwrap_err();
134136
assert_eq!(err.status(), 400);
135137
}

src/auth/basic_auth.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,9 @@ mod test {
135135
#[test]
136136
fn bad_request_on_parse_error() {
137137
let mut headers = Headers::new();
138-
headers.insert(AUTHORIZATION, "<nori ate the tag. yum.>");
138+
headers
139+
.insert(AUTHORIZATION, "<nori ate the tag. yum.>")
140+
.unwrap();
139141
let err = BasicAuth::from_headers(headers).unwrap_err();
140142
assert_eq!(err.status(), 400);
141143
}

src/auth/www_authenticate.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,9 @@ mod test {
156156
#[test]
157157
fn bad_request_on_parse_error() {
158158
let mut headers = Headers::new();
159-
headers.insert(WWW_AUTHENTICATE, "<nori ate the tag. yum.>");
159+
headers
160+
.insert(WWW_AUTHENTICATE, "<nori ate the tag. yum.>")
161+
.unwrap();
160162
let err = WwwAuthenticate::from_headers(headers).unwrap_err();
161163
assert_eq!(err.status(), 400);
162164
}

src/cache/age.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ mod test {
102102
#[test]
103103
fn bad_request_on_parse_error() {
104104
let mut headers = Headers::new();
105-
headers.insert(AGE, "<nori ate the tag. yum.>");
105+
headers.insert(AGE, "<nori ate the tag. yum.>").unwrap();
106106
let err = Age::from_headers(headers).unwrap_err();
107107
assert_eq!(err.status(), 400);
108108
}

src/cache/cache_control/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ mod test {
3737
#[test]
3838
fn ignore_unkonwn_directives() -> crate::Result<()> {
3939
let mut headers = Headers::new();
40-
headers.insert(CACHE_CONTROL, "barrel_roll");
40+
headers.insert(CACHE_CONTROL, "barrel_roll").unwrap();
4141
let entries = CacheControl::from_headers(headers)?.unwrap();
4242
let mut entries = entries.iter();
4343
assert!(entries.next().is_none());
@@ -47,7 +47,7 @@ mod test {
4747
#[test]
4848
fn bad_request_on_parse_error() {
4949
let mut headers = Headers::new();
50-
headers.insert(CACHE_CONTROL, "min-fresh=0.9"); // floats are not supported
50+
headers.insert(CACHE_CONTROL, "min-fresh=0.9").unwrap(); // floats are not supported
5151
let err = CacheControl::from_headers(headers).unwrap_err();
5252
assert_eq!(err.status(), 400);
5353
}

src/cache/clear_site_data/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,15 +278,16 @@ mod test {
278278
#[test]
279279
fn parse_quotes_correctly() -> crate::Result<()> {
280280
let mut res = Response::new(200);
281-
res.insert_header("clear-site-data", r#""cookies""#);
281+
res.insert_header("clear-site-data", r#""cookies""#)
282+
.unwrap();
282283

283284
let entries = ClearSiteData::from_headers(res)?.unwrap();
284285
assert!(!entries.wildcard());
285286
let mut entries = entries.iter();
286287
assert_eq!(entries.next().unwrap(), &ClearDirective::Cookies);
287288

288289
let mut res = Response::new(200);
289-
res.insert_header("clear-site-data", r#""*""#);
290+
res.insert_header("clear-site-data", r#""*""#).unwrap();
290291

291292
let entries = ClearSiteData::from_headers(res)?.unwrap();
292293
assert!(entries.wildcard());

src/cache/expires.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ mod test {
107107
#[test]
108108
fn bad_request_on_parse_error() {
109109
let mut headers = Headers::new();
110-
headers.insert(EXPIRES, "<nori ate the tag. yum.>");
110+
headers.insert(EXPIRES, "<nori ate the tag. yum.>").unwrap();
111111
let err = Expires::from_headers(headers).unwrap_err();
112112
assert_eq!(err.status(), 400);
113113
}

src/conditional/etag.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ mod test {
164164
#[test]
165165
fn bad_request_on_parse_error() {
166166
let mut headers = Headers::new();
167-
headers.insert(ETAG, "<nori ate the tag. yum.>");
167+
headers.insert(ETAG, "<nori ate the tag. yum.>").unwrap();
168168
let err = ETag::from_headers(headers).unwrap_err();
169169
assert_eq!(err.status(), 400);
170170
}
@@ -179,7 +179,7 @@ mod test {
179179

180180
fn assert_entry_err(s: &str, msg: &str) {
181181
let mut headers = Headers::new();
182-
headers.insert(ETAG, s);
182+
headers.insert(ETAG, s).unwrap();
183183
let err = ETag::from_headers(headers).unwrap_err();
184184
assert_eq!(format!("{}", err), msg);
185185
}

src/conditional/if_modified_since.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,9 @@ mod test {
104104
#[test]
105105
fn bad_request_on_parse_error() {
106106
let mut headers = Headers::new();
107-
headers.insert(IF_MODIFIED_SINCE, "<nori ate the tag. yum.>");
107+
headers
108+
.insert(IF_MODIFIED_SINCE, "<nori ate the tag. yum.>")
109+
.unwrap();
108110
let err = IfModifiedSince::from_headers(headers).unwrap_err();
109111
assert_eq!(err.status(), 400);
110112
}

src/conditional/if_unmodified_since.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,9 @@ mod test {
104104
#[test]
105105
fn bad_request_on_parse_error() {
106106
let mut headers = Headers::new();
107-
headers.insert(IF_UNMODIFIED_SINCE, "<nori ate the tag. yum.>");
107+
headers
108+
.insert(IF_UNMODIFIED_SINCE, "<nori ate the tag. yum.>")
109+
.unwrap();
108110
let err = IfUnmodifiedSince::from_headers(headers).unwrap_err();
109111
assert_eq!(err.status(), 400);
110112
}

0 commit comments

Comments
 (0)