diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-09-21 19:21:32 -0700 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-09-21 19:21:32 -0700 |
commit | 770936f1f9b56010011c2af7f5f854d88f1c1d4f (patch) | |
tree | ff67e18d3cd927a4f08b4be79b41d9c3033d52b3 /netlib | |
parent | 1e5a5b03f8d56df62a04a368bd5eb2d59cb7582a (diff) | |
download | mitmproxy-770936f1f9b56010011c2af7f5f854d88f1c1d4f.tar.gz mitmproxy-770936f1f9b56010011c2af7f5f854d88f1c1d4f.tar.bz2 mitmproxy-770936f1f9b56010011c2af7f5f854d88f1c1d4f.zip |
raise TypeError on invalid header assignment, fix #1562
Diffstat (limited to 'netlib')
-rw-r--r-- | netlib/http/headers.py | 1 | ||||
-rw-r--r-- | netlib/strutils.py | 5 |
2 files changed, 5 insertions, 1 deletions
diff --git a/netlib/http/headers.py b/netlib/http/headers.py index 131e8ce5..b55874ca 100644 --- a/netlib/http/headers.py +++ b/netlib/http/headers.py @@ -14,6 +14,7 @@ if six.PY2: # pragma: no cover return x def _always_bytes(x): + strutils.always_bytes(x, "utf-8", "replace") # raises a TypeError if x != str/bytes/None. return x else: # While headers _should_ be ASCII, it's not uncommon for certain headers to be utf-8 encoded. diff --git a/netlib/strutils.py b/netlib/strutils.py index 4cb3b805..d43c2aab 100644 --- a/netlib/strutils.py +++ b/netlib/strutils.py @@ -8,7 +8,10 @@ import six def always_bytes(unicode_or_bytes, *encode_args): if isinstance(unicode_or_bytes, six.text_type): return unicode_or_bytes.encode(*encode_args) - return unicode_or_bytes + elif isinstance(unicode_or_bytes, bytes) or unicode_or_bytes is None: + return unicode_or_bytes + else: + raise TypeError("Expected str or bytes, but got {}.".format(type(unicode_or_bytes).__name__)) def native(s, *encoding_opts): |