Skip to content

Commit ebe7051

Browse files
committed
Don't send 'User-Agent' twice if header is binary
1 parent 00f1769 commit ebe7051

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/urllib3/connection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ def request(self, method, url, body=None, headers=None):
228228
else:
229229
# Avoid modifying the headers passed into .request()
230230
headers = headers.copy()
231-
if "user-agent" not in (k.lower() for k in headers):
231+
if "user-agent" not in (six.ensure_str(k.lower()) for k in headers):
232232
headers["User-Agent"] = _get_default_user_agent()
233233
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
234234

test/with_dummyserver/test_connectionpool.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,29 @@ def test_default_user_agent_header(self):
829829
request_headers = json.loads(r.data.decode("utf8"))
830830
assert request_headers.get("User-Agent") == custom_ua2
831831

832+
@pytest.mark.parametrize(
833+
"headers",
834+
[
835+
None,
836+
{},
837+
{"User-Agent": "key"},
838+
{"user-agent": "key"},
839+
{b"uSeR-AgEnT": b"key"},
840+
{b"user-agent": "key"},
841+
],
842+
)
843+
@pytest.mark.parametrize("chunked", [True, False])
844+
def test_user_agent_header_not_sent_twice(self, headers, chunked):
845+
with HTTPConnectionPool(self.host, self.port) as pool:
846+
r = pool.request("GET", "/headers", headers=headers, chunked=chunked)
847+
request_headers = json.loads(r.data.decode("utf8"))
848+
849+
if not headers:
850+
assert request_headers["User-Agent"].startswith("python-urllib3/")
851+
assert "key" not in request_headers["User-Agent"]
852+
else:
853+
assert request_headers["User-Agent"] == "key"
854+
832855
def test_no_user_agent_header(self):
833856
""" ConnectionPool can suppress sending a user agent header """
834857
custom_ua = "I'm not a web scraper, what are you talking about?"

0 commit comments

Comments
 (0)