_parsebody(): A fix for SF bug #631350, where a subobject in a

multipart/digest isn't a message/rfc822.  This is legal, but counter
to recommended practice in RFC 2046, $5.1.5.

The fix is to look at the content type after setting the default
content type.  If the maintype is then message or multipart, attach
the parsed subobject, otherwise use set_payload() to set the data of
the other object.
This commit is contained in:
Barry Warsaw 2002-11-05 20:54:37 +00:00
parent 00e6a02ef8
commit 5c9130ec46
1 changed files with 6 additions and 2 deletions

View File

@ -221,9 +221,13 @@ class Parser:
# msgobj in this case is the "message/rfc822" container
msgobj = self.parsestr(parthdrs, headersonly=1)
# while submsgobj is the message itself
submsgobj = self.parsestr(part)
msgobj.attach(submsgobj)
msgobj.set_default_type('message/rfc822')
maintype = msgobj.get_content_maintype()
if maintype in ('message', 'multipart'):
submsgobj = self.parsestr(part)
msgobj.attach(submsgobj)
else:
msgobj.set_payload(part)
else:
msgobj = self.parsestr(part)
container.preamble = preamble