summaryrefslogtreecommitdiff
path: root/email/email.scm
diff options
context:
space:
mode:
authorArun Isaac2019-09-23 10:35:29 +0530
committerArun Isaac2019-09-23 10:35:29 +0530
commitc10524726e0a91445a0329cc9aa72b7467258381 (patch)
tree051b5da76efe4500a25736e88863f81715144780 /email/email.scm
parent812933d29e57b2482781152933a963a1650fd548 (diff)
downloadguile-email-c10524726e0a91445a0329cc9aa72b7467258381.tar.gz
guile-email-c10524726e0a91445a0329cc9aa72b7467258381.tar.lz
guile-email-c10524726e0a91445a0329cc9aa72b7467258381.zip
email: Tolerate non-ASCII non-UTF-8 characters in headers.
* email/email.scm (email->headers+body): If non-ASCII non-UTF-8 characters occur in the headers, do not raise a decoding error. Work around using the substitute conversion strategy. * tests/email.scm ("tolerate non-ASCII characters in headers"): Rename to "decode utf-8 characters in headers". ("tolerate non-ascii non-utf-8 characters in headers"): New test. Reported-by: Christopher Baines <mail@cbaines.net>
Diffstat (limited to 'email/email.scm')
-rw-r--r--email/email.scm5
1 files changed, 4 insertions, 1 deletions
diff --git a/email/email.scm b/email/email.scm
index f276019..6ed285f 100644
--- a/email/email.scm
+++ b/email/email.scm
@@ -611,8 +611,11 @@ values. The returned headers is a string and body is a bytevector."
;; name, we relax this requirement. We assume an encoding of
;; UTF-8, and hope that everything turns out fine. Since UTF-8
;; is a superset of ASCII, this should not affect standards
- ;; conforming headers.
+ ;; conforming headers. If encoding is neither UTF-8 nor ASCII,
+ ;; we use the substitute conversion strategy and proceed without
+ ;; raising an error.
(set-port-encoding! port "utf-8")
+ (set-port-conversion-strategy! port 'substitute)
(let ((headers (read-while port get-line-with-delimiter
(lambda (line)
(not (or (string= line "\n")