mirror of https://github.com/python/cpython
#14983: always add a line end after a MIME boundary marker.
This is more RFC compliant (see issue) and fixes a problem with signature verifiers rejecting the part when signed. There is some amount of backward compatibility concern here since it changes the output, but the RFC issue coupled with fixing the problem with signature verifiers seems worth the small risk of breaking code that depends on the current incorrect output.
This commit is contained in:
parent
409ea5dac1
commit
e9c31470e1
|
@ -299,9 +299,8 @@ class Generator:
|
|||
# body-part
|
||||
self._fp.write(body_part)
|
||||
# close-delimiter transport-padding
|
||||
self.write(self._NL + '--' + boundary + '--')
|
||||
self.write(self._NL + '--' + boundary + '--' + self._NL)
|
||||
if msg.epilogue is not None:
|
||||
self.write(self._NL)
|
||||
if self._mangle_from_:
|
||||
epilogue = fcre.sub('>From ', msg.epilogue)
|
||||
else:
|
||||
|
|
|
@ -119,6 +119,7 @@ hello
|
|||
|
||||
|
||||
--__--__----
|
||||
|
||||
--192.168.1.2.889.32614.987812255.500.21814
|
||||
Content-type: text/plain; charset=us-ascii
|
||||
Content-description: Digest Footer
|
||||
|
|
|
@ -1711,7 +1711,8 @@ From: bperson@dom.ain
|
|||
|
||||
--BOUNDARY
|
||||
|
||||
--BOUNDARY--''')
|
||||
--BOUNDARY--
|
||||
''')
|
||||
|
||||
def test_no_parts_in_a_multipart_with_empty_epilogue(self):
|
||||
outer = MIMEBase('multipart', 'mixed')
|
||||
|
@ -1756,7 +1757,8 @@ MIME-Version: 1.0
|
|||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
hello world
|
||||
--BOUNDARY--''')
|
||||
--BOUNDARY--
|
||||
''')
|
||||
|
||||
def test_seq_parts_in_a_multipart_with_empty_preamble(self):
|
||||
eq = self.ndiffAssertEqual
|
||||
|
@ -1782,7 +1784,8 @@ MIME-Version: 1.0
|
|||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
hello world
|
||||
--BOUNDARY--''')
|
||||
--BOUNDARY--
|
||||
''')
|
||||
|
||||
|
||||
def test_seq_parts_in_a_multipart_with_none_preamble(self):
|
||||
|
@ -1808,7 +1811,8 @@ MIME-Version: 1.0
|
|||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
hello world
|
||||
--BOUNDARY--''')
|
||||
--BOUNDARY--
|
||||
''')
|
||||
|
||||
|
||||
def test_seq_parts_in_a_multipart_with_none_epilogue(self):
|
||||
|
@ -1834,7 +1838,8 @@ MIME-Version: 1.0
|
|||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
hello world
|
||||
--BOUNDARY--''')
|
||||
--BOUNDARY--
|
||||
''')
|
||||
|
||||
|
||||
def test_seq_parts_in_a_multipart_with_empty_epilogue(self):
|
||||
|
|
|
@ -48,6 +48,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #14983: email.generator now always adds a line end after each MIME
|
||||
boundary marker, instead of doing so only when there is an epilogue. This
|
||||
fixes an RFC compliance bug and solves an issue with signed MIME parts.
|
||||
|
||||
- Issue #20540: Fix a performance regression (vs. Python 3.2) when layering
|
||||
a multiprocessing Connection over a TCP socket. For small payloads, Nagle's
|
||||
algorithm would introduce idle delays before the entire transmission of a
|
||||
|
|
Loading…
Reference in New Issue