X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=blobdiff_plain;f=src%2Fplugins%2Flibravatar%2Flibravatar_image.c;h=b5675aac2dd2ea499c96214f2b80d3944de78123;hp=d36408ea77505517c8f95aef5f60f51fd53d7e8d;hb=3fdfe990c6976d2e5b41b27655dc3c4da5bccb94;hpb=d71e99303d0b82fde93cd90300487d1b3a567e95 diff --git a/src/plugins/libravatar/libravatar_image.c b/src/plugins/libravatar/libravatar_image.c index d36408ea7..b5675aac2 100644 --- a/src/plugins/libravatar/libravatar_image.c +++ b/src/plugins/libravatar/libravatar_image.c @@ -37,7 +37,7 @@ static size_t write_image_data_cb(void *ptr, size_t size, size_t nmemb, void *stream) { size_t written = claws_fwrite(ptr, size, nmemb, (FILE *)stream); - debug_print("received %zu bytes from avatar server\n", written); + debug_print("received %"G_GSIZE_FORMAT" bytes from avatar server\n", written); return written; } @@ -72,6 +72,7 @@ static GdkPixbuf *pixbuf_from_url(const gchar *url, const gchar *md5, const gcha GdkPixbuf *image = NULL; FILE *file; CURL *curl; + CURLcode res; long filesize; file = claws_fopen(filename, "wb"); @@ -98,28 +99,37 @@ 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); } curl_easy_setopt(curl, CURLOPT_FILE, file); debug_print("retrieving URL to file: %s -> %s\n", url, filename); - curl_easy_perform(curl); - filesize = ftell(file); - claws_safe_fclose(file); - if (filesize < MIN_PNG_SIZE) - debug_print("not enough data for an avatar image: %ld bytes\n", filesize); - else - image = image_pixbuf_from_filename(filename); - - if (!libravatarprefs.cache_icons || filesize == 0) { - if (g_unlink(filename) < 0) - g_warning("failed to delete cache file '%s'", filename); - } + res = curl_easy_perform(curl); + if (res != CURLE_OK) { + debug_print("curl_easy_perfom failed: %s", curl_easy_strerror(res)); + claws_safe_fclose(file); + } else { + filesize = ftell(file); + claws_safe_fclose(file); + if (filesize < MIN_PNG_SIZE) + debug_print("not enough data for an avatar image: %ld bytes\n", filesize); + else + image = image_pixbuf_from_filename(filename); + + if (!libravatarprefs.cache_icons || filesize == 0) { + if (g_unlink(filename) < 0) + g_warning("failed to delete cache file '%s'", filename); + } - if (filesize == 0) - missing_add_md5(libravatarmisses, md5); + if (filesize == 0) + missing_add_md5(libravatarmisses, md5); + } curl_easy_cleanup(curl);