File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 ( "/" , "." ) ) ) ;
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments