Filter missing messages and return defaults on missing headers.
authorRicardo Wurmus <rekado@elephly.net>
Tue, 31 Mar 2020 13:14:48 +0000 (15:14 +0200)
committerRicardo Wurmus <rekado@elephly.net>
Tue, 31 Mar 2020 13:14:48 +0000 (15:14 +0200)
mumi/messages.scm
mumi/web/view/html.scm

index 805a5183a735dda86b2c67e6e30ffa3a09948f05..ed7e5f38a1654490faca65ce3c0966ae7da19479 100644 (file)
@@ -68,10 +68,11 @@ yet.  Return new results alongside cached results."
   (assoc-ref address 'address))
 
 (define (header message key)
-  (assoc-ref (email-headers message) key))
+  (assoc-ref (or (email-headers message) '()) key))
 
 (define-public (sender message)
-  (first (header message 'from)))
+  (or (and=> (header message 'from) first)
+      "unknown sender"))
 
 (define-public sender-email
   (compose extract-email sender))
@@ -80,7 +81,7 @@ yet.  Return new results alongside cached results."
   (extract-name (sender message)))
 
 (define-public (date message)
-  (header message 'date))
+  (or (header message 'date) "unknown date"))
 
 (define-public (subject message)
   (or (header message 'subject) "(no subject)"))
@@ -97,7 +98,7 @@ yet.  Return new results alongside cached results."
 
 (define-public (recipients message)
   "Return a list of recipient email addresses for the given MESSAGE."
-  (let ((headers (email-headers message)))
+  (let ((headers (or (email-headers message) '())))
     (filter-map (match-lambda
                   (((or 'cc 'bcc 'to) val) val)
                   (_ #f)) headers)))
index 363b97d44296bfb0d927e21f77feb12bfe13e5ee..2b8df5b08562204d6c68827cf54b6c5324d88876 100644 (file)
@@ -283,7 +283,7 @@ some examples.")
   (define id (bug-num bug))
   (define messages (patch-messages id))
   (define parties (sort (filter (compose (negate bot?) extract-email)
-                                (participants messages))
+                                (participants (filter identity messages)))
                         (lambda (a b)
                           (string< (extract-email a)
                                    (extract-email b)))))
@@ -421,7 +421,8 @@ some examples.")
                                ;; Ignore messages
                                ;; without body, and
                                ;; internal messages.
-                               (and (email-body msg)
+                               (and msg
+                                    (email-body msg)
                                     (not (internal-message? msg))))
                              messages)))
            (map (lambda (message-number msg previous-subject)