diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 1ce84b817c..b0db930779 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -627,11 +627,11 @@ public class MessageHelper { return result; } - void downloadAttachment(Context context, DB db, long id, int sequence) throws IOException { + boolean downloadAttachment(Context context, DB db, long id, int sequence) throws IOException { // Attachments of drafts might not have been uploaded yet if (sequence > attachments.size()) { Log.w("Attachment unavailable sequence=" + sequence + " size=" + attachments.size()); - return; + return false; } // Get data @@ -662,10 +662,12 @@ public class MessageHelper { db.attachment().setDownloaded(id, size); Log.i("Downloaded attachment size=" + size); + return true; } catch (Throwable ex) { Log.w(ex); // Reset progress on failure db.attachment().setError(id, Helper.formatThrowable(ex)); + return false; } finally { if (os != null) os.close(); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index f5a8e10899..8c66a33846 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -2638,7 +2638,8 @@ public class ServiceSynchronize extends LifecycleService { EntityAttachment attachment = attachments.get(i); if (!attachment.available) if (!metered || (attachment.size != null && attachment.size < maxSize)) - parts.downloadAttachment(context, db, attachment.id, attachment.sequence); + if (!parts.downloadAttachment(context, db, attachment.id, attachment.sequence)) + break; } } }