]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Make sure that the in-operator on HTTPHeaders is case insensitive 3563/head
authorArnaud Schoonjans <arnaud.schoonjans@inmanta.com>
Mon, 15 Dec 2025 11:12:18 +0000 (12:12 +0100)
committerArnaud Schoonjans <arnaud.schoonjans@inmanta.com>
Mon, 15 Dec 2025 11:12:18 +0000 (12:12 +0100)
tornado/httputil.py
tornado/test/httputil_test.py

index 13a95d9092211d09b71e233fea40a04a3fda46bc..74dfb87f171862b63e54b391cd8851349c1c9b52 100644 (file)
@@ -345,7 +345,8 @@ class HTTPHeaders(StrMutableMapping):
         # in __getitem__ when it's not needed.
         if not isinstance(name, str):
             return False
-        return name in self._as_list
+        norm_name = _normalize_header(name)
+        return norm_name in self._as_list
 
     def __getitem__(self, name: str) -> str:
         header = _normalize_header(name)
index 7fa528cdcb39e847151ff973084dc7ae7883668d..9c7ee093f36f99b5fafbf65dc011afa98d570fe9 100644 (file)
@@ -329,6 +329,9 @@ Foo: even
             sorted(list(headers.get_all())),
             [("Asdf", "qwer zxcv"), ("Foo", "bar baz"), ("Foo", "even more lines")],
         )
+        # Verify case insensitivity in-operator
+        self.assertTrue("asdf" in headers)
+        self.assertTrue("Asdf" in headers)
 
     def test_continuation(self):
         data = "Foo: bar\r\n\tasdf"