From b6ecb416f82d7b19e1f111b77f559785fb207320 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 21 Dec 2018 16:50:02 +0100 Subject: [PATCH] Handle IO exceptions with underlying messaging exception --- .../java/eu/faircode/email/MessageHelper.java | 5 +++++ .../eu/faircode/email/ServiceSynchronize.java | 21 ++++++++++++++++--- .../eu/faircode/email/ViewModelBrowse.java | 11 +++++++--- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 75791b33d6..c01c3be702 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -575,6 +575,11 @@ public class MessageHelper { for (int i = 0; i < multipart.getCount(); i++) result.addAll(getAttachments(multipart.getBodyPart(i))); } + } catch (IOException ex) { + if (ex.getCause() instanceof MessagingException) + Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); + else + throw ex; } catch (ParseException ex) { Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); } diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 5fc7e651f3..95468b2e8e 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1003,7 +1003,12 @@ public class ServiceSynchronize extends LifecycleService { } catch (FolderClosedException ex) { throw ex; } catch (IOException ex) { - throw ex; + if (ex.getCause() instanceof MessagingException) { + Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); + if (!(ex.getCause() instanceof MessageRemovedException)) + db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); + } else + throw ex; } catch (Throwable ex) { Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); @@ -1084,7 +1089,12 @@ public class ServiceSynchronize extends LifecycleService { } catch (FolderClosedException ex) { throw ex; } catch (IOException ex) { - throw ex; + if (ex.getCause() instanceof MessagingException) { + Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); + if (!(ex.getCause() instanceof MessageRemovedException)) + db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); + } else + throw ex; } catch (Throwable ex) { Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); @@ -2095,7 +2105,12 @@ public class ServiceSynchronize extends LifecycleService { } catch (FolderClosedException ex) { throw ex; } catch (IOException ex) { - throw ex; + if (ex.getCause() instanceof MessagingException) { + Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); + if (!(ex.getCause() instanceof MessageRemovedException)) + db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); + } else + throw ex; } catch (Throwable ex) { Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); diff --git a/app/src/main/java/eu/faircode/email/ViewModelBrowse.java b/app/src/main/java/eu/faircode/email/ViewModelBrowse.java index e5f5ece94f..32ea4b9618 100644 --- a/app/src/main/java/eu/faircode/email/ViewModelBrowse.java +++ b/app/src/main/java/eu/faircode/email/ViewModelBrowse.java @@ -218,13 +218,18 @@ public class ViewModelBrowse extends ViewModel { } db.message().setMessageFound(message.account, message.thread); } catch (MessageRemovedException ex) { - Log.w(Helper.TAG, folder.name + "Boundary " + ex + "\n" + Log.getStackTraceString(ex)); + Log.w(Helper.TAG, folder.name + " boundary " + ex + "\n" + Log.getStackTraceString(ex)); } catch (FolderClosedException ex) { throw ex; } catch (IOException ex) { - throw ex; + if (ex.getCause() instanceof MessagingException) { + Log.w(Helper.TAG, folder.name + " boundary " + ex + "\n" + Log.getStackTraceString(ex)); + if (!(ex.getCause() instanceof MessageRemovedException)) + db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); + } else + throw ex; } catch (Throwable ex) { - Log.e(Helper.TAG, folder.name + "Boundary " + ex + "\n" + Log.getStackTraceString(ex)); + Log.e(Helper.TAG, folder.name + " boundary " + ex + "\n" + Log.getStackTraceString(ex)); db.folder().setFolderError(folder.id, Helper.formatThrowable(ex)); } finally { ((IMAPMessage) isub[j]).invalidateHeaders();