fixes ipv6 authority form parsing in CONNECT

This commit is contained in:
Robert C Jensen 2017-04-07 15:46:21 -04:00
parent c76620c19f
commit 7365f18542
2 changed files with 4 additions and 1 deletions

View File

@ -271,7 +271,9 @@ def _parse_authority_form(hostport):
ValueError, if the input is malformed
"""
try:
host, port = hostport.split(b":")
host, port = hostport.rsplit(b":", 1)
if host.startswith(b"[") and host.endswith(b"]"):
host = host[1:-1]
port = int(port)
if not check.is_valid_host(host) or not check.is_valid_port(port):
raise ValueError()

View File

@ -243,6 +243,7 @@ def test_read_request_line():
def test_parse_authority_form():
assert _parse_authority_form(b"foo:42") == (b"foo", 42)
assert _parse_authority_form(b"[2001:db8:42::]:443") == (b"2001:db8:42::", 443)
with pytest.raises(exceptions.HttpSyntaxException):
_parse_authority_form(b"foo")
with pytest.raises(exceptions.HttpSyntaxException):