diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2015-10-15 17:16:47 -0700 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2015-10-31 11:26:17 -0700 |
commit | aef06f2f20aafd888a8f60c3c37d5d07e77e275f (patch) | |
tree | 8ed3e38b4cace0f78717e277ab7e5839efbecf27 /components/net/file_loader.rs | |
parent | 53d8f04ac4894480aa8bc7a6a79fb5e02ae050d1 (diff) | |
download | servo-aef06f2f20aafd888a8f60c3c37d5d07e77e275f.tar.gz servo-aef06f2f20aafd888a8f60c3c37d5d07e77e275f.zip |
Consistently use content-type sniffing with all protocols.
Diffstat (limited to 'components/net/file_loader.rs')
-rw-r--r-- | components/net/file_loader.rs | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/components/net/file_loader.rs b/components/net/file_loader.rs index f1ffe9c957f..c41f382f949 100644 --- a/components/net/file_loader.rs +++ b/components/net/file_loader.rs @@ -5,7 +5,7 @@ use mime_classifier::MIMEClassifier; use net_traits::ProgressMsg::{Done, Payload}; use net_traits::{LoadConsumer, LoadData, Metadata}; -use resource_task::{ProgressSender, send_error, start_sending, start_sending_sniffed}; +use resource_task::{ProgressSender, send_error, start_sending_sniffed, start_sending_sniffed_opt}; use std::borrow::ToOwned; use std::error::Error; use std::fs::File; @@ -52,19 +52,28 @@ pub fn factory(load_data: LoadData, senders: LoadConsumer, classifier: Arc<MIMEC Ok(file_path) => { match File::open(&file_path) { Ok(ref mut reader) => { - let metadata = Metadata::default(url); - let res = read_block(reader); - let (res, progress_chan) = match res { + match read_block(reader) { Ok(ReadStatus::Partial(buf)) => { + let metadata = Metadata::default(url); let progress_chan = start_sending_sniffed(senders, metadata, classifier, &buf); progress_chan.send(Payload(buf)).unwrap(); - (read_all(reader, &progress_chan), progress_chan) + let res = read_all(reader, &progress_chan); + let _ = progress_chan.send(Done(res)); + } + Ok(ReadStatus::EOF) => { + let metadata = Metadata::default(url); + if let Ok(chan) = start_sending_sniffed_opt(senders, + metadata, + classifier, + &[]) { + let _ = chan.send(Done(Ok(()))); + } + } + Err(e) => { + send_error(url, e, senders); } - Ok(ReadStatus::EOF) | Err(_) => - (res.map(|_| ()), start_sending(senders, metadata)), }; - progress_chan.send(Done(res)).unwrap(); } Err(e) => { send_error(url, e.description().to_owned(), senders); |