[Python-checkins] r87798 - in python/branches/release31-maint: Lib/test/test_wsgiref.py Lib/wsgiref/handlers.py Misc/ACKS Misc/NEWS

antoine.pitrou python-checkins at python.org
Thu Jan 6 18:18:32 CET 2011


Author: antoine.pitrou
Date: Thu Jan  6 18:18:32 2011
New Revision: 87798

Log:
Merged revisions 87797 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87797 | antoine.pitrou | 2011-01-06 18:17:04 +0100 (jeu., 06 janv. 2011) | 4 lines
  
  Issue #3839: wsgiref should not override a Content-Length header set by
  the application.  Initial patch by Clovis Fabricio.
........


Modified:
   python/branches/release31-maint/   (props changed)
   python/branches/release31-maint/Lib/test/test_wsgiref.py
   python/branches/release31-maint/Lib/wsgiref/handlers.py
   python/branches/release31-maint/Misc/ACKS
   python/branches/release31-maint/Misc/NEWS

Modified: python/branches/release31-maint/Lib/test/test_wsgiref.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_wsgiref.py	(original)
+++ python/branches/release31-maint/Lib/test/test_wsgiref.py	Thu Jan  6 18:18:32 2011
@@ -543,6 +543,11 @@
             s('200 OK',[])
             return ['\u0442\u0435\u0441\u0442'.encode("utf-8")]
 
+        def trivial_app4(e,s):
+            # Simulate a response to a HEAD request
+            s('200 OK',[('Content-Length', '12345')])
+            return []
+
         h = TestHandler()
         h.run(trivial_app1)
         self.assertEqual(h.stdout.getvalue(),
@@ -566,10 +571,12 @@
             b'\r\n'
             b'\xd1\x82\xd0\xb5\xd1\x81\xd1\x82')
 
-
-
-
-
+        h = TestHandler()
+        h.run(trivial_app4)
+        self.assertEqual(h.stdout.getvalue(),
+            b'Status: 200 OK\r\n'
+            b'Content-Length: 12345\r\n'
+            b'\r\n')
 
     def testBasicErrorOutput(self):
 

Modified: python/branches/release31-maint/Lib/wsgiref/handlers.py
==============================================================================
--- python/branches/release31-maint/Lib/wsgiref/handlers.py	(original)
+++ python/branches/release31-maint/Lib/wsgiref/handlers.py	Thu Jan  6 18:18:32 2011
@@ -240,7 +240,9 @@
     def finish_content(self):
         """Ensure headers and content have both been sent"""
         if not self.headers_sent:
-            self.headers['Content-Length'] = "0"
+            # Only zero Content-Length if not set by the application (so
+            # that HEAD requests can be satisfied properly, see #3839)
+            self.headers.setdefault('Content-Length', "0")
             self.send_headers()
         else:
             pass # XXX check if content-length was too short?

Modified: python/branches/release31-maint/Misc/ACKS
==============================================================================
--- python/branches/release31-maint/Misc/ACKS	(original)
+++ python/branches/release31-maint/Misc/ACKS	Thu Jan  6 18:18:32 2011
@@ -237,6 +237,7 @@
 David Everly
 Greg Ewing
 Martijn Faassen
+Clovis Fabricio
 Andreas Faerber
 Bill Fancher
 Troy J. Farrell

Modified: python/branches/release31-maint/Misc/NEWS
==============================================================================
--- python/branches/release31-maint/Misc/NEWS	(original)
+++ python/branches/release31-maint/Misc/NEWS	Thu Jan  6 18:18:32 2011
@@ -27,6 +27,9 @@
 Library
 -------
 
+- Issue #3839: wsgiref should not override a Content-Length header set by
+  the application.  Initial patch by Clovis Fabricio.
+
 - Issue #10790: email.header.Header.append's charset logic now works correctly
   for charsets whose output codec is different from its input codec.
 


More information about the Python-checkins mailing list