]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Avoid unnecessary work in HTTPHeaders._normalize_name.
authorBen Darnell <ben@bendarnell.com>
Fri, 10 Dec 2010 18:56:07 +0000 (10:56 -0800)
committerBen Darnell <ben@bendarnell.com>
Sat, 11 Dec 2010 00:35:54 +0000 (16:35 -0800)
tornado/httputil.py

index ee1c3c1383d302b47c38789897325f9e82734332..95611d2fadb5cbf365c0f09ae3a34c484803552c 100755 (executable)
@@ -16,6 +16,8 @@
 
 """HTTP utility code shared by clients and servers."""
 
+import re
+
 class HTTPHeaders(dict):
     """A dictionary that maintains Http-Header-Case for all keys.
 
@@ -125,6 +127,7 @@ class HTTPHeaders(dict):
         for k, v in dict(*args, **kwargs).iteritems():
             self[k] = v
 
+    _NORMALIZED_HEADER_RE = re.compile(r'^[A-Z0-9][a-z0-9]*(-[A-Z0-9][a-z0-9]*)*$')
     @staticmethod
     def _normalize_name(name):
         """Converts a name to Http-Header-Case.
@@ -132,6 +135,8 @@ class HTTPHeaders(dict):
         >>> HTTPHeaders._normalize_name("coNtent-TYPE")
         'Content-Type'
         """
+        if HTTPHeaders._NORMALIZED_HEADER_RE.match(name):
+            return name
         return "-".join([w.capitalize() for w in name.split("-")])