[Python-checkins] cpython (3.4): #10510: make distuitls upload/register use HTML standards compliant CRLF.

r.david.murray python-checkins at python.org
Sat Sep 27 22:59:21 CEST 2014


https://hg.python.org/cpython/rev/5e3f8bd33cf2
changeset:   92610:5e3f8bd33cf2
branch:      3.4
parent:      92608:0ec56e677bc3
user:        R David Murray <rdmurray at bitdance.com>
date:        Sat Sep 27 16:56:15 2014 -0400
summary:
  #10510: make distuitls upload/register use HTML standards compliant CRLF.

Patch by Ian Cordasco, approved by Éric Araujo.

files:
  Lib/distutils/command/upload.py    |  10 +++++-----
  Lib/distutils/tests/test_upload.py |   2 +-
  Misc/ACKS                          |   1 +
  Misc/NEWS                          |   3 +++
  4 files changed, 10 insertions(+), 6 deletions(-)


diff --git a/Lib/distutils/command/upload.py b/Lib/distutils/command/upload.py
--- a/Lib/distutils/command/upload.py
+++ b/Lib/distutils/command/upload.py
@@ -143,11 +143,11 @@
 
         # Build up the MIME payload for the POST data
         boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
-        sep_boundary = b'\n--' + boundary.encode('ascii')
-        end_boundary = sep_boundary + b'--'
+        sep_boundary = b'\r\n--' + boundary.encode('ascii')
+        end_boundary = sep_boundary + b'--\r\n'
         body = io.BytesIO()
         for key, value in data.items():
-            title = '\nContent-Disposition: form-data; name="%s"' % key
+            title = '\r\nContent-Disposition: form-data; name="%s"' % key
             # handle multiple entries for the same name
             if type(value) != type([]):
                 value = [value]
@@ -159,12 +159,12 @@
                     value = str(value).encode('utf-8')
                 body.write(sep_boundary)
                 body.write(title.encode('utf-8'))
-                body.write(b"\n\n")
+                body.write(b"\r\n\r\n")
                 body.write(value)
                 if value and value[-1:] == b'\r':
                     body.write(b'\n')  # write an extra newline (lurve Macs)
         body.write(end_boundary)
-        body.write(b"\n")
+        body.write(b"\r\n")
         body = body.getvalue()
 
         self.announce("Submitting %s to %s" % (filename, self.repository), log.INFO)
diff --git a/Lib/distutils/tests/test_upload.py b/Lib/distutils/tests/test_upload.py
--- a/Lib/distutils/tests/test_upload.py
+++ b/Lib/distutils/tests/test_upload.py
@@ -127,7 +127,7 @@
 
         # what did we send ?
         headers = dict(self.last_open.req.headers)
-        self.assertEqual(headers['Content-length'], '2087')
+        self.assertEqual(headers['Content-length'], '2163')
         content_type = headers['Content-type']
         self.assertTrue(content_type.startswith('multipart/form-data'))
         self.assertEqual(self.last_open.req.get_method(), 'POST')
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -279,6 +279,7 @@
 Garrett Cooper
 Greg Copeland
 Aldo Cortesi
+Ian Cordasco
 David Costanzo
 Scott Cotton
 Greg Couch
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -33,6 +33,9 @@
 Library
 -------
 
+- Issue #10510: distutils register and upload methods now use HTML standards
+  compliant CRLF line endings.
+
 - Issue #9850: Fixed macpath.join() for empty first component.  Patch by
   Oleg Oshmyan.
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list