Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fetch cancellation: Listen for cancellation and prematurely abort if …
…cancelled
  • Loading branch information
Manishearth committed Nov 21, 2017
1 parent 6dd7af2 commit 7249fd6
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions components/net/http_loader.rs
Expand Up @@ -1087,6 +1087,7 @@ fn http_network_fetch(request: &Request,
let devtools_sender = context.devtools_chan.clone();
let meta_status = meta.status.clone();
let meta_headers = meta.headers.clone();
let cancellation_listener = context.cancellation_listener.clone();
thread::Builder::new().name(format!("fetch worker thread")).spawn(move || {
match StreamedResponse::from_http_response(res) {
Ok(mut res) => {
Expand All @@ -1109,6 +1110,11 @@ 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);
return;
}
match read_block(&mut res) {
Ok(Data::Payload(chunk)) => {
if let ResponseBody::Receiving(ref mut body) = *res_body.lock().unwrap() {
Expand Down

0 comments on commit 7249fd6

Please sign in to comment.