diff options
author | Maximilian Hils <git@maximilianhils.com> | 2017-04-09 01:15:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-09 01:15:50 +0200 |
commit | c7b501275205e2cf82055981106336d4a0db252f (patch) | |
tree | de1b8413ef9dfe7f4847c2bf901c1d9538ad3209 | |
parent | c76620c19f20eb0cac1860a7a3a363bd8d309081 (diff) | |
parent | 7365f185421baa85ca103af9ef13dfdd39f26416 (diff) | |
download | mitmproxy-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.py | 4 | ||||
-rw-r--r-- | test/mitmproxy/net/http/http1/test_read.py | 1 |
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): |