[geary/mjog/rfc822-cleanup-part-n: 3/9] Geary.RFC822.Message: Suppress message id errors in ctors




commit 26f5fdef38221a354d8d2d42af68b7fea3a6a964
Author: Michael Gratton <mike vee net>
Date:   Tue Jun 30 14:26:31 2020 +1000

    Geary.RFC822.Message: Suppress message id errors in ctors
    
    Even if the a message has an invalid message id or message id list
    header value, we need to keep parsing the message to ensure we can
    do *something* useful with it.

 src/engine/rfc822/rfc822-message.vala | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)
---
diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala
index 57c587351..f0f47d572 100644
--- a/src/engine/rfc822/rfc822-message.vala
+++ b/src/engine/rfc822/rfc822-message.vala
@@ -961,11 +961,21 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet {
         return addresses;
     }
 
-    private MessageIDList append_message_id(MessageIDList? existing,
-                                            string header_value) {
-        MessageIDList ids = new MessageIDList.from_rfc822_string(header_value);
-        if (existing != null) {
-            ids = existing.append(ids);
+    private MessageIDList? append_message_id(MessageIDList? existing,
+                                            string header_value)
+        throws Error {
+        MessageIDList? ids = existing;
+        if (!String.is_empty_or_whitespace(header_value)) {
+            try {
+                ids = new MessageIDList.from_rfc822_string(header_value);
+                if (existing != null) {
+                    ids = existing.append(ids);
+                }
+            } catch (Error err) {
+                // Can't simply throw this since we need to be as lax as
+                // possible when decoding messages. Hence just log it.
+                debug("Error parsing message id list: %s", err.message);
+            }
         }
         return ids;
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]