]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Better HTTP header parsing: Allow (and strip) any amount of leading
authorBen Darnell <bdarnell@beaker.local>
Mon, 19 Apr 2010 18:20:03 +0000 (11:20 -0700)
committerBen Darnell <bdarnell@beaker.local>
Mon, 19 Apr 2010 18:20:03 +0000 (11:20 -0700)
and trailing whitespace around header values instead of just a single
space.  Such whitespace is legal but appears to be uncommon (and nginx
apparently normalizes everything to a single space)
http://tools.ietf.org/html/rfc2616#page-31

tornado/httpclient.py
tornado/httpserver.py
tornado/wsgi.py

index c232d832ec26a170b27b2f593ff011d1cdf4dd5a..2bee8973e219b3d1b7b0533c4b9318fd844e0a0e 100644 (file)
@@ -438,7 +438,7 @@ def _curl_header_callback(headers, header_line):
         return
     if header_line == "\r\n":
         return
-    parts = header_line.split(": ")
+    parts = header_line.split(":")
     if len(parts) != 2:
         _log.warning("Invalid HTTP response header line %r", header_line)
         return
index a7ec57eec4b7afbb8e119789aa3a16dd2a7d372a..dab9945b72b0bd489e55e923072a0f6494bd122e 100644 (file)
@@ -445,6 +445,6 @@ class HTTPHeaders(dict):
         headers = cls()
         for line in headers_string.splitlines():
             if line:
-                name, value = line.split(": ", 1)
-                headers[name] = value
+                name, value = line.split(":", 1)
+                headers[name] = value.strip()
         return headers
index 69fa0988ebb767ce6b5a14ff0c5a4430063dc706..24bd22d278b697193029f8b1257c2de2a04b4cba 100644 (file)
@@ -306,6 +306,6 @@ class HTTPHeaders(dict):
         headers = cls()
         for line in headers_string.splitlines():
             if line:
-                name, value = line.split(": ", 1)
-                headers[name] = value
+                name, value = line.split(":", 1)
+                headers[name] = value.strip()
         return headers