aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/protocol2/root_context.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2015-08-18 14:15:08 +0200
committerMaximilian Hils <git@maximilianhils.com>2015-08-18 14:15:08 +0200
commit96de7ad562da9b5110059988b851c66b51874510 (patch)
treea8696a74835638376453c576ecf502cbf74373c0 /libmproxy/protocol2/root_context.py
parent99129ab5a15bc4708eda80e4f56b46bb0f1efa86 (diff)
downloadmitmproxy-96de7ad562da9b5110059988b851c66b51874510.tar.gz
mitmproxy-96de7ad562da9b5110059988b851c66b51874510.tar.bz2
mitmproxy-96de7ad562da9b5110059988b851c66b51874510.zip
various fixes
Diffstat (limited to 'libmproxy/protocol2/root_context.py')
-rw-r--r--libmproxy/protocol2/root_context.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/libmproxy/protocol2/root_context.py b/libmproxy/protocol2/root_context.py
index 6ba6ca9a..f8a645b0 100644
--- a/libmproxy/protocol2/root_context.py
+++ b/libmproxy/protocol2/root_context.py
@@ -1,4 +1,5 @@
from __future__ import (absolute_import, print_function, division)
+import string
from .messages import Kill
from .rawtcp import RawTcpLayer
@@ -36,6 +37,8 @@ class RootContext(object):
d[2] in ('\x00', '\x01', '\x02', '\x03')
)
+ is_ascii = all(x in string.ascii_uppercase for x in d)
+
# TODO: build is_http2_magic check here, maybe this is an easy way to detect h2c
if not d:
@@ -43,10 +46,11 @@ class RootContext(object):
if is_tls_client_hello:
return TlsLayer(top_layer, True, True)
- elif isinstance(top_layer, TlsLayer) and top_layer.client_conn.get_alpn_proto_negotiated() == 'h2':
+ elif isinstance(top_layer, TlsLayer) and is_ascii:
+ if top_layer.client_conn.get_alpn_proto_negotiated() == 'h2':
return Http2Layer(top_layer, 'transparent')
- elif isinstance(top_layer, TlsLayer) and isinstance(top_layer.ctx, Http1Layer):
- return Http1Layer(top_layer, "transparent")
+ else:
+ return Http1Layer(top_layer, "transparent")
else:
return RawTcpLayer(top_layer)