aboutsummaryrefslogtreecommitdiffstats
path: root/components/net/http_loader.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2017-11-20 17:02:31 -0800
committerManish Goregaokar <manishsmail@gmail.com>2017-11-20 17:04:55 -0800
commit6f59b152f1738ddecfbc1891bafd6f55c34992bc (patch)
tree1ffacc1e0e5413bc30b528debe4582dfc4261926 /components/net/http_loader.rs
parent7249fd6bd82b70fa097ce2c66dc8bdb4bf023da8 (diff)
downloadservo-6f59b152f1738ddecfbc1891bafd6f55c34992bc.tar.gz
servo-6f59b152f1738ddecfbc1891bafd6f55c34992bc.zip
Add aborted flag to response, set when fetch is aborted
Diffstat (limited to 'components/net/http_loader.rs')
-rw-r--r--components/net/http_loader.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs
index 8eb1a901203..318e57e1030 100644
--- a/components/net/http_loader.rs
+++ b/components/net/http_loader.rs
@@ -1088,6 +1088,9 @@ fn http_network_fetch(request: &Request,
let meta_status = meta.status.clone();
let meta_headers = meta.headers.clone();
let cancellation_listener = context.cancellation_listener.clone();
+ if cancellation_listener.lock().unwrap().cancelled() {
+ return Response::network_error(NetworkError::Internal("Fetch aborted".into()))
+ }
thread::Builder::new().name(format!("fetch worker thread")).spawn(move || {
match StreamedResponse::from_http_response(res) {
Ok(mut res) => {
@@ -1112,7 +1115,7 @@ fn http_network_fetch(request: &Request,
loop {
if cancellation_listener.lock().unwrap().cancelled() {
*res_body.lock().unwrap() = ResponseBody::Done(vec![]);
- let _ = done_sender.send(Data::Done);
+ let _ = done_sender.send(Data::Cancelled);
return;
}
match read_block(&mut res) {
@@ -1134,6 +1137,7 @@ fn http_network_fetch(request: &Request,
let _ = done_sender.send(Data::Done);
break;
}
+ Ok(Data::Cancelled) => unreachable!() // read_block doesn't return Data::Cancelled
}
}
}