aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mitmproxy/net/http/http1/read.py4
-rw-r--r--test/mitmproxy/net/http/http1/test_read.py1
2 files changed, 4 insertions, 1 deletions
diff --git a/mitmproxy/net/http/http1/read.py b/mitmproxy/net/http/http1/read.py
index ef88fd6c..491135ac 100644
--- a/mitmproxy/net/http/http1/read.py
+++ b/mitmproxy/net/http/http1/read.py
@@ -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()
diff --git a/test/mitmproxy/net/http/http1/test_read.py b/test/mitmproxy/net/http/http1/test_read.py
index 642b91c0..b3589c92 100644
--- a/test/mitmproxy/net/http/http1/test_read.py
+++ b/test/mitmproxy/net/http/http1/test_read.py
@@ -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):