diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2019-11-27 10:32:20 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-27 10:32:20 -0500 |
commit | 57a844c6a7719d1ad4e6cd5632e8a9a8ab3c953e (patch) | |
tree | 5c78b308651affd7f341ccc4c5d4120f2efd8da0 | |
parent | 1e96c10cb7ae11ccd1d0e1b7647e1c336f44ca66 (diff) | |
parent | 117c927ddce4d753d69f301eac5bb55a9607ff05 (diff) | |
download | cherrypy-git-57a844c6a7719d1ad4e6cd5632e8a9a8ab3c953e.tar.gz |
Merge pull request #1828 from cherrypy/bugfix/1827-headermap-keytypev18.5.0
Potential fix for HeaderMap issues
-rw-r--r-- | CHANGES.rst | 3 | ||||
-rw-r--r-- | cherrypy/lib/httputil.py | 11 |
2 files changed, 9 insertions, 5 deletions
diff --git a/CHANGES.rst b/CHANGES.rst index 57d3fff1..1697a91f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,6 +1,9 @@ v18.5.0 ------- +* :issue:`1827`: Fixed issue where bytes values in a ``HeaderMap`` + would be converted to strings. + * :pr:`1826`: Rely on `jaraco.collections <https://pypi.org/project/jaraco.collections>`_ for its case-insensitive dictionary support. diff --git a/cherrypy/lib/httputil.py b/cherrypy/lib/httputil.py index 06004c9c..eedf8d89 100644 --- a/cherrypy/lib/httputil.py +++ b/cherrypy/lib/httputil.py @@ -391,12 +391,15 @@ class CaseInsensitiveDict(jaraco.collections.KeyTransformingDict): """A case-insensitive dict subclass. - Each key is changed on entry to str(key).title(). + Each key is changed on entry to title case. """ @staticmethod def transform_key(key): - return str(key).title() + if key is None: + # TODO(#1830): why? + return 'None' + return key.title() # TEXT = <any OCTET except CTLs, but including LWS> @@ -435,9 +438,7 @@ class HeaderMap(CaseInsensitiveDict): def elements(self, key): """Return a sorted list of HeaderElements for the given header.""" - key = str(key).title() - value = self.get(key) - return header_elements(key, value) + return header_elements(self.transform_key(key), self.get(key)) def values(self, key): """Return a sorted list of HeaderElement.value for the given header.""" |