diff options
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 } } } |