From: Ricardo Mones Date: Sun, 21 Jun 2020 17:40:59 +0000 (+0200) Subject: Fix bug 4325 "Following redirects when retrieving image" X-Git-Tag: 3.17.6~9 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=3fdfe990c6976d2e5b41b27655dc3c4da5bccb94;ds=sidebyside Fix bug 4325 "Following redirects when retrieving image" Previously hardcoded numbers are now raised to cope with libravatar servers changes and also moved into 3 new hidden preferences for the plugin, for future customisation if required. --- diff --git a/src/plugins/libravatar/libravatar_image.c b/src/plugins/libravatar/libravatar_image.c index 057569a0f..b5675aac2 100644 --- a/src/plugins/libravatar/libravatar_image.c +++ b/src/plugins/libravatar/libravatar_image.c @@ -99,8 +99,12 @@ static GdkPixbuf *pixbuf_from_url(const gchar *url, const gchar *md5, const gcha curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); if (libravatarprefs.allow_redirects) { - long maxredirs = (libravatarprefs.default_mode == DEF_MODE_URL)? 3L - : ((libravatarprefs.default_mode == DEF_MODE_MM)? 2L: 1L); + long maxredirs = (libravatarprefs.default_mode == DEF_MODE_URL) + ? libravatarprefs.max_redirects_url + : ((libravatarprefs.default_mode == DEF_MODE_MM) + ? libravatarprefs.max_redirects_mm + : libravatarprefs.max_redirects_url); + debug_print("setting max redirects to %ld\n", maxredirs); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_MAXREDIRS, maxredirs); } diff --git a/src/plugins/libravatar/libravatar_prefs.c b/src/plugins/libravatar/libravatar_prefs.c index 3183def94..3a097001b 100644 --- a/src/plugins/libravatar/libravatar_prefs.c +++ b/src/plugins/libravatar/libravatar_prefs.c @@ -93,6 +93,15 @@ static PrefParam param[] = { { "timeout", "0", &libravatarprefs.timeout, P_INT, NULL, NULL, NULL }, + { "max_redirects_url", "7", + &libravatarprefs.max_redirects_url, + P_INT, NULL, NULL, NULL }, + { "max_redirects_mm", "5", + &libravatarprefs.max_redirects_mm, + P_INT, NULL, NULL, NULL }, + { "max_redirects", "3", + &libravatarprefs.max_redirects, + P_INT, NULL, NULL, NULL }, {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL} }; diff --git a/src/plugins/libravatar/libravatar_prefs.h b/src/plugins/libravatar/libravatar_prefs.h index 49be9645d..2e4cb93c3 100644 --- a/src/plugins/libravatar/libravatar_prefs.h +++ b/src/plugins/libravatar/libravatar_prefs.h @@ -48,6 +48,9 @@ struct _LibravatarPrefs gboolean allow_federated; #endif guint timeout; + guint max_redirects_url; /* hidden pref */ + guint max_redirects_mm; /* hidden pref */ + guint max_redirects; /* hidden pref */ }; extern LibravatarPrefs libravatarprefs;