@@ -18,6 +18,7 @@ use iron::{
18
18
use lol_html:: errors:: RewritingError ;
19
19
use router:: Router ;
20
20
use serde:: Serialize ;
21
+ use std:: path:: Path ;
21
22
22
23
#[ derive( Clone ) ]
23
24
pub struct RustLangRedirector {
@@ -644,13 +645,17 @@ impl Handler for SharedResourceHandler {
644
645
fn handle ( & self , req : & mut Request ) -> IronResult < Response > {
645
646
let path = req. url . path ( ) ;
646
647
let filename = path. last ( ) . unwrap ( ) ; // unwrap is fine: vector is non-empty
647
- let suffix = filename. split ( '.' ) . last ( ) . unwrap ( ) ; // unwrap is fine: split always works
648
- if [ "js" , "css" , "woff" , "svg" ] . contains ( & suffix) {
649
- let storage = extension ! ( req, Storage ) ;
650
- let config = extension ! ( req, Config ) ;
648
+ if let Some ( extension) = Path :: new ( filename) . extension ( ) {
649
+ if [ "js" , "css" , "woff" , "woff2" , "svg" , "png" ]
650
+ . iter ( )
651
+ . any ( |s| * s == extension)
652
+ {
653
+ let storage = extension ! ( req, Storage ) ;
654
+ let config = extension ! ( req, Config ) ;
651
655
652
- if let Ok ( file) = File :: from_path ( & storage, filename, & config) {
653
- return Ok ( file. serve ( ) ) ;
656
+ if let Ok ( file) = File :: from_path ( & storage, filename, & config) {
657
+ return Ok ( file. serve ( ) ) ;
658
+ }
654
659
}
655
660
}
656
661
0 commit comments