diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2017-11-20 17:02:31 -0800 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2017-11-20 17:04:55 -0800 |
commit | 6f59b152f1738ddecfbc1891bafd6f55c34992bc (patch) | |
tree | 1ffacc1e0e5413bc30b528debe4582dfc4261926 /components/net/http_loader.rs | |
parent | 7249fd6bd82b70fa097ce2c66dc8bdb4bf023da8 (diff) | |
download | servo-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.rs | 6 |
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 } } } |