Commit 5fbc0df4 authored by Brendan Cully's avatar Brendan Cully

Make multipart decoding a little more forgiving.

First, ignore bad content-transfer-encoding in multipart sections.
Second, if an attachment fails to decode, print a warning and continue
instead of giving up on the entire message.
parent c0d72524
1970-01-01 00:00 +0000 Brendan Cully <[email protected]> (a2e8f6fab8d3)
* smtp.c: Test that envelope from or from is set before attempting
SMTP delivery. Closes #3079.
2008-06-14 18:23 -0700 Christoph Berg <[email protected]> (4b790909a037)
* doc/mbox.man: Document that From_ lines use asctime-style dates,
not RFC2822 dates. Closes #3077.
2008-06-11 22:45 -0700 Alexey I. Froloff <[email protected]> (1e8ca708a52f) 2008-06-11 22:45 -0700 Alexey I. Froloff <[email protected]> (1e8ca708a52f)
* attach.c: Do not attempt to close invalid descriptors. Closes #3075 * attach.c: Do not attempt to close invalid descriptors. Closes #3075
......
...@@ -1199,11 +1199,12 @@ int multipart_handler (BODY *a, STATE *s) ...@@ -1199,11 +1199,12 @@ int multipart_handler (BODY *a, STATE *s)
if (rc) if (rc)
{ {
mutt_error ("One or more parts of this message could not be displayed");
dprint (1, (debugfile, "Failed on attachment #%d, type %s/%s.\n", count, TYPE(p), NONULL (p->subtype))); dprint (1, (debugfile, "Failed on attachment #%d, type %s/%s.\n", count, TYPE(p), NONULL (p->subtype)));
} }
if (rc || ((s->flags & M_REPLYING) if ((s->flags & M_REPLYING)
&& (option (OPTINCLUDEONLYFIRST)) && (s->flags & M_FIRSTDONE))) && (option (OPTINCLUDEONLYFIRST)) && (s->flags & M_FIRSTDONE))
break; break;
} }
...@@ -1564,6 +1565,14 @@ int mutt_body_handler (BODY *b, STATE *s) ...@@ -1564,6 +1565,14 @@ int mutt_body_handler (BODY *b, STATE *s)
if (!handler) if (!handler)
handler = multipart_handler; handler = multipart_handler;
if (b->encoding != ENC7BIT && b->encoding != ENC8BIT
&& b->encoding != ENCBINARY)
{
dprint (1, (debugfile, "Bad encoding type %d for multipart entity, "
"assuming 7 bit\n", b->encoding));
b->encoding = ENC7BIT;
}
} }
else if (WithCrypto && b->type == TYPEAPPLICATION) else if (WithCrypto && b->type == TYPEAPPLICATION)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment