Avoid some unnecessary Options in http_network_fetch.

This commit is contained in:
Ms2ger 2016-11-22 09:49:51 +01:00
parent f24be9ad51
commit d9947cdf7b

View file

@ -1150,12 +1150,12 @@ fn http_network_fetch(request: Rc<Request>,
let res_body = response.body.clone(); let res_body = response.body.clone();
// We're about to spawn a thread to be waited on here // We're about to spawn a thread to be waited on here
*done_chan = Some(channel()); let (done_sender, done_receiver) = channel();
*done_chan = Some((done_sender.clone(), done_receiver));
let meta = match response.metadata().expect("Response metadata should exist at this stage") { let meta = match response.metadata().expect("Response metadata should exist at this stage") {
FetchMetadata::Unfiltered(m) => m, FetchMetadata::Unfiltered(m) => m,
FetchMetadata::Filtered { unsafe_, .. } => unsafe_ FetchMetadata::Filtered { unsafe_, .. } => unsafe_
}; };
let done_sender = done_chan.as_ref().map(|ch| ch.0.clone());
let devtools_sender = context.devtools_chan.clone(); let devtools_sender = context.devtools_chan.clone();
let meta_status = meta.status.clone(); let meta_status = meta.status.clone();
let meta_headers = meta.headers.clone(); let meta_headers = meta.headers.clone();
@ -1185,9 +1185,7 @@ fn http_network_fetch(request: Rc<Request>,
Ok(Data::Payload(chunk)) => { Ok(Data::Payload(chunk)) => {
if let ResponseBody::Receiving(ref mut body) = *res_body.lock().unwrap() { if let ResponseBody::Receiving(ref mut body) = *res_body.lock().unwrap() {
body.extend_from_slice(&chunk); body.extend_from_slice(&chunk);
if let Some(ref sender) = done_sender { let _ = done_sender.send(Data::Payload(chunk));
let _ = sender.send(Data::Payload(chunk));
}
} }
}, },
Ok(Data::Done) | Err(_) => { Ok(Data::Done) | Err(_) => {
@ -1201,9 +1199,7 @@ fn http_network_fetch(request: Rc<Request>,
_ => empty_vec, _ => empty_vec,
}; };
*res_body.lock().unwrap() = ResponseBody::Done(completed_body); *res_body.lock().unwrap() = ResponseBody::Done(completed_body);
if let Some(ref sender) = done_sender { let _ = done_sender.send(Data::Done);
let _ = sender.send(Data::Done);
}
break; break;
} }
} }
@ -1212,9 +1208,7 @@ fn http_network_fetch(request: Rc<Request>,
Err(_) => { Err(_) => {
// XXXManishearth we should propagate this error somehow // XXXManishearth we should propagate this error somehow
*res_body.lock().unwrap() = ResponseBody::Done(vec![]); *res_body.lock().unwrap() = ResponseBody::Done(vec![]);
if let Some(ref sender) = done_sender { let _ = done_sender.send(Data::Done);
let _ = sender.send(Data::Done);
}
} }
} }
}); });