aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2017-04-09 01:15:50 +0200
committerGitHub <noreply@github.com>2017-04-09 01:15:50 +0200
commitc7b501275205e2cf82055981106336d4a0db252f (patch)
treede1b8413ef9dfe7f4847c2bf901c1d9538ad3209
parentc76620c19f20eb0cac1860a7a3a363bd8d309081 (diff)
parent7365f185421baa85ca103af9ef13dfdd39f26416 (diff)
downloadmitmproxy-c7b501275205e2cf82055981106336d4a0db252f.tar.gz
mitmproxy-c7b501275205e2cf82055981106336d4a0db252f.tar.bz2
mitmproxy-c7b501275205e2cf82055981106336d4a0db252f.zip
Merge pull request #2232 from r1b/master
fixes ipv6 authority form parsing in CONNECT
-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):