]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Do not send/expect Content-Length on 1xx
authorSebastien Boving <seb@google.com>
Tue, 27 Jun 2017 16:35:55 +0000 (09:35 -0700)
committerSebastien Boving <seb@google.com>
Tue, 27 Jun 2017 16:35:55 +0000 (09:35 -0700)
tornado/http1connection.py
tornado/web.py

index 618af0b30eebd455bee0207ea0cf3fcfd99cc69b..ec05b7b521ccc747a04c889397627790f3174561 100644 (file)
@@ -350,10 +350,11 @@ class HTTP1Connection(httputil.HTTPConnection):
                 # self._request_start_line.version or
                 # start_line.version?
                 self._request_start_line.version == 'HTTP/1.1' and
-                # 304 responses have no body (not even a zero-length body), and so
-                # should not have either Content-Length or Transfer-Encoding.
-                # headers.
+                # 1xx, 204 and 304 responses have no body (not even a zero-length
+                # body), and so should not have either Content-Length or
+                # Transfer-Encoding headers.
                 start_line.code not in (204, 304) and
+                (start_line.code < 100 or start_line.code >= 200) and
                 # No need to chunk the output if a Content-Length is specified.
                 'Content-Length' not in headers and
                 # Applications are discouraged from touching Transfer-Encoding,
index 33346516f83769aceda72de414a7f469cce9b489..c86d9838dfc39f5604ed98ed6833c9d9e466e224 100644 (file)
@@ -997,7 +997,8 @@ class RequestHandler(object):
             if self._status_code in (204, 304):
                 assert not self._write_buffer, "Cannot send body with %s" % self._status_code
                 self._clear_headers_for_304()
-            elif "Content-Length" not in self._headers:
+            elif ("Content-Length" not in self._headers and
+                  (self._status_code < 100 or self._status_code >= 200)):
                 content_length = sum(len(part) for part in self._write_buffer)
                 self.set_header("Content-Length", content_length)