diff -r 0c8a7299c7e3 -r 61a46a752cb6 Lib/distutils/command/upload.py --- a/Lib/distutils/command/upload.py Sun Apr 27 16:39:33 2014 +0100 +++ b/Lib/distutils/command/upload.py Sun Apr 27 20:44:27 2014 -0500 @@ -136,8 +136,8 @@ # Build up the MIME payload for the POST data boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254' - sep_boundary = '\n--' + boundary - end_boundary = sep_boundary + '--' + sep_boundary = '\r\n--' + boundary + end_boundary = sep_boundary + '--\r\n' body = StringIO.StringIO() for key, value in data.items(): # handle multiple entries for the same name @@ -151,14 +151,13 @@ fn = "" body.write(sep_boundary) - body.write('\nContent-Disposition: form-data; name="%s"'%key) + body.write('\r\nContent-Disposition: form-data; name="%s"' % key) body.write(fn) - body.write("\n\n") + body.write("\r\n\r\n") body.write(value) if value and value[-1] == '\r': body.write('\n') # write an extra newline (lurve Macs) body.write(end_boundary) - body.write("\n") body = body.getvalue() self.announce("Submitting %s to %s" % (filename, self.repository), log.INFO) diff -r 0c8a7299c7e3 -r 61a46a752cb6 Lib/distutils/tests/test_upload.py --- a/Lib/distutils/tests/test_upload.py Sun Apr 27 16:39:33 2014 +0100 +++ b/Lib/distutils/tests/test_upload.py Sun Apr 27 20:44:27 2014 -0500 @@ -115,7 +115,7 @@ # what did we send ? self.assertIn('dédé', self.last_open.req.data) headers = dict(self.last_open.req.headers) - self.assertEqual(headers['Content-length'], '2085') + self.assertEqual(headers['Content-length'], '2159') self.assertTrue(headers['Content-type'].startswith('multipart/form-data')) self.assertEqual(self.last_open.req.get_method(), 'POST') self.assertEqual(self.last_open.req.get_full_url(),