From 77c1b382b76ba90acc570a4194521d6bd4425bac Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Thu, 6 Jan 2011 17:19:05 +0000 Subject: 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. ........ --- Lib/test/test_wsgiref.py | 15 +++++++++++---- Lib/wsgiref/handlers.py | 4 +++- Misc/ACKS | 1 + Misc/NEWS | 3 +++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_wsgiref.py b/Lib/test/test_wsgiref.py index 5866efc..45ca620 100644 --- a/Lib/test/test_wsgiref.py +++ b/Lib/test/test_wsgiref.py @@ -481,6 +481,11 @@ class HandlerTests(TestCase): s('200 OK',[])(e['wsgi.url_scheme']) return [] + 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(), @@ -497,10 +502,12 @@ class HandlerTests(TestCase): "http") - - - - + 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): diff --git a/Lib/wsgiref/handlers.py b/Lib/wsgiref/handlers.py index a5f7109..ae1e8cc 100644 --- a/Lib/wsgiref/handlers.py +++ b/Lib/wsgiref/handlers.py @@ -240,7 +240,9 @@ class BaseHandler: 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? diff --git a/Misc/ACKS b/Misc/ACKS index fbe650d..aca3873 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -242,6 +242,7 @@ Paul Everitt David Everly Greg Ewing Martijn Faassen +Clovis Fabricio Andreas Faerber Bill Fancher Troy J. Farrell diff --git a/Misc/NEWS b/Misc/NEWS index 3d19974..1ac5985 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -25,6 +25,9 @@ Core and Builtins Library ------- +- Issue #3839: wsgiref should not override a Content-Length header set by + the application. Initial patch by Clovis Fabricio. + - Issue #10806, issue #9905: Fix subprocess pipes when some of the standard file descriptors (0, 1, 2) are closed in the parent process. Initial patch by Ross Lagerwall. -- cgit v0.12