diff --git a/src/fs.rs b/src/fs.rs index 36efcf0c0..d92ad1e73 100644 --- a/src/fs.rs +++ b/src/fs.rs @@ -87,28 +87,27 @@ impl Responder for NamedFile { fn respond_to(mut self, req: HttpRequest) -> Result { if let Some(rangeheader) = req.headers().get(header::RANGE) { let file_metadata = metadata(self.0)?; - if let Ok(ranges) = HttpRange::parse(rangeheader.to_str().unwrap(), file_metadata.len()) { + if let Ok(ranges) = HttpRange::parse(try!(rangeheader.to_str()), file_metadata.len()) { let mut resp = HTTPPartialContent.build(); let length: usize = ranges[0].length as usize; let mut data: Vec = vec![0u8; length]; let _ = &self.1.seek(SeekFrom::Start(ranges[0].start))?; - let _ = self.1.read_exact(&mut data); + let _ = self.1.read_exact(&mut data)?; Ok(resp - .header(header::CONTENT_RANGE, format!("bytes {}-{}/{}", ranges[0].start, ranges[0].length, file_metadata.len()).as_str()) + .header(header::CONTENT_RANGE, format!("bytes {}-{}/{}", ranges[0].start, ranges[0].start + ranges[0].length, file_metadata.len()).as_str()) .body(data).unwrap()) } else { Ok(HTTPRangeNotSatisfiable.build() .header(header::CONTENT_RANGE, format!("bytes */{}", file_metadata.len()).as_str()) .header(header::ACCEPT_RANGES, "bytes") - .body("").unwrap()) + .finish().unwrap()) } } else { - //let file_metadata = metadata(self.0)?; let mut resp = HTTPOk.build(); resp.header(header::ACCEPT_RANGES, "bytes"); resp.content_encoding(ContentEncoding::Identity); if let Some(ext) = self.path().extension() { - let mime = get_mime_type(&ext.to_string_lossy()); + let mime = get_mime_type(&ext.to_string_lossy()); resp.content_type(format!("{}", mime).as_str()); } let mut data = Vec::new();