Skip to content

Commit 06a354f

Browse files
authored
Merge commit from fork
1 parent d9b96e6 commit 06a354f

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

actix-files/src/lib.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,24 @@ mod tests {
470470
assert_eq!(response.status(), StatusCode::RANGE_NOT_SATISFIABLE);
471471
}
472472

473+
#[actix_rt::test]
474+
async fn test_named_file_empty_range_headers() {
475+
let srv = actix_test::start(|| App::new().service(Files::new("/", ".")));
476+
477+
for range in ["", "bytes="] {
478+
let response = srv
479+
.get("/tests/test.binary")
480+
.insert_header((header::RANGE, range))
481+
.send()
482+
.await
483+
.unwrap();
484+
485+
assert_eq!(response.status(), StatusCode::RANGE_NOT_SATISFIABLE);
486+
let content_range = response.headers().get(header::CONTENT_RANGE).unwrap();
487+
assert_eq!(content_range.to_str().unwrap(), "bytes */100");
488+
}
489+
}
490+
473491
#[actix_rt::test]
474492
async fn test_named_file_content_range_headers() {
475493
let srv = actix_test::start(|| App::new().service(Files::new("/", ".")));

actix-files/src/named.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -550,9 +550,12 @@ impl NamedFile {
550550
// check for range header
551551
if let Some(ranges) = req.headers().get(header::RANGE) {
552552
if let Ok(ranges_header) = ranges.to_str() {
553-
if let Ok(ranges) = HttpRange::parse(ranges_header, length) {
554-
length = ranges[0].length;
555-
offset = ranges[0].start;
553+
if let Some(range) = HttpRange::parse(ranges_header, length)
554+
.ok()
555+
.and_then(|ranges| ranges.first().copied())
556+
{
557+
length = range.length;
558+
offset = range.start;
556559

557560
// When a Content-Encoding header is present in a 206 partial content response
558561
// for video content, it prevents browser video players from starting playback

0 commit comments

Comments
 (0)