From 3b27dbb0aa058bf01d648ad0c1b3399ce97f6d0e Mon Sep 17 00:00:00 2001
From: BlackDex <black.dex@gmail.com>
Date: Tue, 12 Feb 2019 21:56:28 +0100
Subject: [PATCH] Added config option for icon download timeout

---
 .env.template    | 5 +++++
 src/api/icons.rs | 2 +-
 src/config.rs    | 2 ++
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/.env.template b/.env.template
index b7ae6eaa..b388e6ff 100644
--- a/.env.template
+++ b/.env.template
@@ -49,6 +49,11 @@
 ## otherwise it will delete them and they won't be downloaded again.
 # DISABLE_ICON_DOWNLOAD=false
 
+## Icon download timeout
+## Configure the timeout value when downloading the favicons.
+## The default is 10 seconds, but this could be to low on slower network connections
+# ICON_DOWNLOAD_TIMEOUT=10
+
 ## Controls if new users can register
 # SIGNUPS_ALLOWED=true
 
diff --git a/src/api/icons.rs b/src/api/icons.rs
index b7479f56..e93eef81 100644
--- a/src/api/icons.rs
+++ b/src/api/icons.rs
@@ -26,7 +26,7 @@ lazy_static! {
     // Reuse the client between requests
     static ref CLIENT: Client = Client::builder()
         .gzip(true)
-        .timeout(Duration::from_secs(5))
+        .timeout(Duration::from_secs(CONFIG.icon_download_timeout()))
         .default_headers(_header_map())
         .build()
         .unwrap();
diff --git a/src/config.rs b/src/config.rs
index d7839a8e..fd153678 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -241,6 +241,8 @@ make_config! {
         icon_cache_ttl:         u64,    true,   def,    2_592_000;
         /// Negative icon cache expiry |> Number of seconds before trying to download an icon that failed again.
         icon_cache_negttl:      u64,    true,   def,    259_200;
+        /// Icon download timeout |> Number of seconds when to stop attempting to download an icon.
+        icon_download_timeout:  u64,   true,   def,    10;
 
         /// Reload templates (Dev) |> When this is set to true, the templates get reloaded with every request. ONLY use this during development, as it can slow down the server
         reload_templates:       bool,   true,   def,    false;
-- 
GitLab