Fix bug 4325 "Following redirects when retrieving image"
authorRicardo Mones <ricardo@mones.org>
Sun, 21 Jun 2020 17:40:59 +0000 (19:40 +0200)
committerRicardo Mones <ricardo@mones.org>
Sun, 21 Jun 2020 17:40:59 +0000 (19:40 +0200)
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.

src/plugins/libravatar/libravatar_image.c
src/plugins/libravatar/libravatar_prefs.c
src/plugins/libravatar/libravatar_prefs.h

index 057569a0f32c71544591267e932190c55c04376f..b5675aac2dd2ea499c96214f2b80d3944de78123 100644 (file)
@@ -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);
        }
index 3183def94973fae33de73fc53868322d67b69695..3a097001b54a14c84a6f8a623614abdb4c43ecd6 100644 (file)
@@ -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}
 };
 
index 49be9645d1c2701dd611bf8dd416e89982525356..2e4cb93c3babc0e0d56d48aa197b4a1ab16fb877 100644 (file)
@@ -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;