@ -104,9 +104,6 @@ fn get_icon(domain: &str) -> Vec<u8> {
return FALLBACK_ICON . to_vec ( ) ;
return FALLBACK_ICON . to_vec ( ) ;
}
}
// Create icon_cache_folder before fetching
create_dir_all ( & CONFIG . icon_cache_folder ( ) ) . expect ( "Error creating icon cache" ) ;
// Get the icon, or fallback in case of error
// Get the icon, or fallback in case of error
match download_icon ( & domain ) {
match download_icon ( & domain ) {
Ok ( icon ) = > {
Ok ( icon ) = > {
@ -115,7 +112,9 @@ fn get_icon(domain: &str) -> Vec<u8> {
}
}
Err ( e ) = > {
Err ( e ) = > {
error ! ( "Error downloading icon: {:?}" , e ) ;
error ! ( "Error downloading icon: {:?}" , e ) ;
mark_negcache ( & path ) ;
let miss_indicator = path . to_owned ( ) + ".miss" ;
let empty_icon = Vec ::new ( ) ;
save_icon ( & miss_indicator , & empty_icon ) ;
FALLBACK_ICON . to_vec ( )
FALLBACK_ICON . to_vec ( )
}
}
}
}
@ -171,11 +170,6 @@ fn icon_is_negcached(path: &str) -> bool {
}
}
}
}
fn mark_negcache ( path : & str ) {
let miss_indicator = path . to_owned ( ) + ".miss" ;
File ::create ( & miss_indicator ) . expect ( "Error creating negative cache marker" ) ;
}
fn icon_is_expired ( path : & str ) -> bool {
fn icon_is_expired ( path : & str ) -> bool {
let expired = file_is_expired ( path , CONFIG . icon_cache_ttl ( ) ) ;
let expired = file_is_expired ( path , CONFIG . icon_cache_ttl ( ) ) ;
expired . unwrap_or ( true )
expired . unwrap_or ( true )
@ -398,9 +392,17 @@ fn download_icon(domain: &str) -> Result<Vec<u8>, Error> {
}
}
fn save_icon ( path : & str , icon : & [ u8 ] ) {
fn save_icon ( path : & str , icon : & [ u8 ] ) {
if let Ok ( mut f ) = File ::create ( path ) {
match File ::create ( path ) {
f . write_all ( icon ) . expect ( "Error writing icon file" ) ;
Ok ( mut f ) = > {
} ;
f . write_all ( icon ) . expect ( "Error writing icon file" ) ;
}
Err ( ref e ) if e . kind ( ) = = std ::io ::ErrorKind ::NotFound = > {
create_dir_all ( & CONFIG . icon_cache_folder ( ) ) . expect ( "Error creating icon cache" ) ;
}
Err ( e ) = > {
info ! ( "Icon save error: {:?}" , e ) ;
}
}
}
}
fn _header_map ( ) -> HeaderMap {
fn _header_map ( ) -> HeaderMap {