mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
Use a match rather than unwrap() in main_fetch.
This commit is contained in:
parent
95883dcbcf
commit
91d63d5fcf
1 changed files with 35 additions and 35 deletions
|
@ -138,51 +138,51 @@ fn main_fetch(request: Rc<Request>, cors_flag: bool, recursive_flag: bool) -> Re
|
||||||
// this step is obsoleted by fetch_async
|
// this step is obsoleted by fetch_async
|
||||||
|
|
||||||
// Step 9
|
// Step 9
|
||||||
let response = if response.is_none() {
|
let response = match response {
|
||||||
|
Some(response) => response,
|
||||||
|
None => {
|
||||||
|
let current_url = request.current_url();
|
||||||
|
let same_origin = if let Origin::Origin(ref origin) = *request.origin.borrow() {
|
||||||
|
*origin == current_url.origin()
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
let current_url = request.current_url();
|
if (same_origin && !cors_flag ) ||
|
||||||
let same_origin = if let Origin::Origin(ref origin) = *request.origin.borrow() {
|
(current_url.scheme == "data" && request.same_origin_data.get()) ||
|
||||||
*origin == current_url.origin()
|
current_url.scheme == "about" ||
|
||||||
} else {
|
request.mode == RequestMode::Navigate {
|
||||||
false
|
|
||||||
};
|
|
||||||
|
|
||||||
if (same_origin && !cors_flag ) ||
|
basic_fetch(request.clone())
|
||||||
(current_url.scheme == "data" && request.same_origin_data.get()) ||
|
|
||||||
current_url.scheme == "about" ||
|
|
||||||
request.mode == RequestMode::Navigate {
|
|
||||||
|
|
||||||
basic_fetch(request.clone())
|
} else if request.mode == RequestMode::SameOrigin {
|
||||||
|
Response::network_error()
|
||||||
|
|
||||||
} else if request.mode == RequestMode::SameOrigin {
|
} else if request.mode == RequestMode::NoCORS {
|
||||||
Response::network_error()
|
request.response_tainting.set(ResponseTainting::Opaque);
|
||||||
|
basic_fetch(request.clone())
|
||||||
|
|
||||||
} else if request.mode == RequestMode::NoCORS {
|
} else if current_url.scheme != "http" && current_url.scheme != "https" {
|
||||||
request.response_tainting.set(ResponseTainting::Opaque);
|
Response::network_error()
|
||||||
basic_fetch(request.clone())
|
|
||||||
|
|
||||||
} else if current_url.scheme != "http" && current_url.scheme != "https" {
|
} else if request.use_cors_preflight ||
|
||||||
Response::network_error()
|
(request.unsafe_request &&
|
||||||
|
(!is_simple_method(&request.method.borrow()) ||
|
||||||
|
request.headers.borrow().iter().any(|h| !is_simple_header(&h)))) {
|
||||||
|
|
||||||
} else if request.use_cors_preflight ||
|
request.response_tainting.set(ResponseTainting::CORSTainting);
|
||||||
(request.unsafe_request &&
|
request.redirect_mode.set(RedirectMode::Error);
|
||||||
(!is_simple_method(&request.method.borrow()) ||
|
let response = http_fetch(request.clone(), BasicCORSCache::new(), true, true, false);
|
||||||
request.headers.borrow().iter().any(|h| !is_simple_header(&h)))) {
|
if response.is_network_error() {
|
||||||
|
// TODO clear cache entries using request
|
||||||
|
}
|
||||||
|
response
|
||||||
|
|
||||||
request.response_tainting.set(ResponseTainting::CORSTainting);
|
} else {
|
||||||
request.redirect_mode.set(RedirectMode::Error);
|
request.response_tainting.set(ResponseTainting::CORSTainting);
|
||||||
let response = http_fetch(request.clone(), BasicCORSCache::new(), true, true, false);
|
http_fetch(request.clone(), BasicCORSCache::new(), true, false, false)
|
||||||
if response.is_network_error() {
|
|
||||||
// TODO clear cache entries using request
|
|
||||||
}
|
}
|
||||||
response
|
|
||||||
|
|
||||||
} else {
|
|
||||||
request.response_tainting.set(ResponseTainting::CORSTainting);
|
|
||||||
http_fetch(request.clone(), BasicCORSCache::new(), true, false, false)
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
response.unwrap()
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Step 10
|
// Step 10
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue