mirror of
https://github.com/servo/servo.git
synced 2025-07-25 00:00:20 +01:00
Fix fetching about:blank
When fetching about:blank, response body should be the empty byte sequence. Spec: https://fetch.spec.whatwg.org/#concept-basic-fetch Before this change, response body would be set to `ResponseBody::Empty`, and then fetching would result in an infinite loop at step 19 in fn `main_fetch` (methods.rs).
This commit is contained in:
parent
ef8d36d208
commit
bcd813d961
2 changed files with 15 additions and 0 deletions
|
@ -294,6 +294,7 @@ fn basic_fetch(request: Rc<Request>) -> Response {
|
|||
response.headers.set(ContentType(Mime(
|
||||
TopLevel::Text, SubLevel::Html,
|
||||
vec![(Attr::Charset, Value::Utf8)])));
|
||||
*response.body.lock().unwrap() = ResponseBody::Done(vec![]);
|
||||
response
|
||||
},
|
||||
_ => Response::network_error()
|
||||
|
|
|
@ -94,6 +94,20 @@ fn test_fetch_response_body_matches_const_message() {
|
|||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fetch_aboutblank() {
|
||||
|
||||
let url = Url::parse("about:blank").unwrap();
|
||||
let origin = Origin::Origin(url.origin());
|
||||
let mut request = Request::new(url, Some(origin), false);
|
||||
request.referer = Referer::NoReferer;
|
||||
let wrapped_request = Rc::new(request);
|
||||
|
||||
let fetch_response = fetch(wrapped_request);
|
||||
assert!(!fetch_response.is_network_error());
|
||||
assert!(*fetch_response.body.lock().unwrap() == ResponseBody::Done(vec![]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fetch_response_is_basic_filtered() {
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue