summary refs log tree commit diff
path: root/email
diff options
context:
space:
mode:
Diffstat (limited to 'email')
-rw-r--r--email/email.scm14
1 files changed, 9 insertions, 5 deletions
diff --git a/email/email.scm b/email/email.scm
index d836908..1075754 100644
--- a/email/email.scm
+++ b/email/email.scm
@@ -537,11 +537,15 @@ explained in RFC2045), and return that list."
                 (negate (cut string-prefix? (string-append "--" boundary) <>))))
 
   (define (read-mime-entity port)
-    (if (string-prefix? (string-append "--" boundary "--")
-                        (get-line-with-delimiter port))
-        (eof-object)
-        (read-till-boundary port))) 
-  
+    (let ((line (get-line-with-delimiter port)))
+      ;; The eof-object? check returns #t only when the message is
+      ;; prematurely truncated. It is invoked only to handle truncated
+      ;; messages gracefully without raising an error.
+      (if (or (eof-object? line)
+              (string-prefix? (string-append "--" boundary "--") line))
+          (eof-object)
+          (read-till-boundary port))))
+
   (call-with-input-string body
     (lambda (port)
       (read-till-boundary port)