From 72c94ff46a29e632c133b05af78a4b8e381fba35 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 14 May 2021 20:18:39 +0200 Subject: [PATCH] Fixed getting favicon edge case (Mozilla) --- .../main/java/eu/faircode/email/ContactInfo.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ContactInfo.java b/app/src/main/java/eu/faircode/email/ContactInfo.java index b775fcc5f3..e2b0d3bb1e 100644 --- a/app/src/main/java/eu/faircode/email/ContactInfo.java +++ b/app/src/main/java/eu/faircode/email/ContactInfo.java @@ -106,7 +106,7 @@ public class ContactInfo { private static final int GRAVATAR_TIMEOUT = 5 * 1000; // milliseconds private static final int FAVICON_CONNECT_TIMEOUT = 5 * 1000; // milliseconds private static final int FAVICON_READ_TIMEOUT = 10 * 1000; // milliseconds - private static final int FAVICON_READ_BYTES = 2048; + private static final int FAVICON_READ_BYTES = 4096; private static final long CACHE_CONTACT_DURATION = 2 * 60 * 1000L; // milliseconds private static final long CACHE_GRAVATAR_DURATION = 2 * 60 * 60 * 1000L; // milliseconds private static final long CACHE_FAVICON_DURATION = 2 * 7 * 24 * 60 * 60 * 1000L; // milliseconds @@ -468,7 +468,7 @@ public class ContactInfo { } private static Bitmap parseFavicon(URL base, int scaleToPixels, Context context) throws IOException { - Log.i("GET favicon " + base); + Log.i("PARSE favicon " + base); HttpsURLConnection connection = (HttpsURLConnection) base.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(FAVICON_READ_TIMEOUT); @@ -486,7 +486,14 @@ public class ContactInfo { String response; try { byte[] buffer = new byte[FAVICON_READ_BYTES]; - int len = connection.getInputStream().read(buffer); + int len = 0; + while (len < buffer.length) { + int read = connection.getInputStream().read(buffer, len, buffer.length - len); + if (read < 0) + break; + else + len += read; + } if (len < 0) throw new IOException("length"); response = new String(buffer, 0, len, StandardCharsets.UTF_8.name());