aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/proxy/connection.py
diff options
context:
space:
mode:
authorThomas Kriechbaumer <thomas@kriechbaumer.name>2015-07-27 11:46:49 +0200
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2015-07-30 13:53:17 +0200
commit89f22f735944989912a7a0394dd7e80d420cb0f3 (patch)
tree426e961c5c98f9bf917e628df09ec5fc53c41442 /libmproxy/proxy/connection.py
parentd2ae6b630e7924479aefbb9f0193fdfcbae8fea6 (diff)
downloadmitmproxy-89f22f735944989912a7a0394dd7e80d420cb0f3.tar.gz
mitmproxy-89f22f735944989912a7a0394dd7e80d420cb0f3.tar.bz2
mitmproxy-89f22f735944989912a7a0394dd7e80d420cb0f3.zip
refactor connection & protocol handling
Diffstat (limited to 'libmproxy/proxy/connection.py')
-rw-r--r--libmproxy/proxy/connection.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/libmproxy/proxy/connection.py b/libmproxy/proxy/connection.py
index 5219023b..54b3688e 100644
--- a/libmproxy/proxy/connection.py
+++ b/libmproxy/proxy/connection.py
@@ -68,7 +68,15 @@ class ClientConnection(tcp.BaseHandler, stateobject.StateObject):
return f
def convert_to_ssl(self, *args, **kwargs):
- tcp.BaseHandler.convert_to_ssl(self, *args, **kwargs)
+ def alpn_select_callback(conn_, options):
+ if alpn_select in options:
+ return bytes(alpn_select)
+ else: # pragma no cover
+ return options[0]
+
+ # TODO: read ALPN from server and select same proto for client conn
+
+ tcp.BaseHandler.convert_to_ssl(self, alpn_select=alpn_select_callback, *args, **kwargs)
self.timestamp_ssl_setup = utils.timestamp()
def finish(self):
@@ -160,7 +168,10 @@ class ServerConnection(tcp.TCPClient, stateobject.StateObject):
self.address.host.encode("idna")) + ".pem"
if os.path.exists(path):
clientcert = path
- self.convert_to_ssl(cert=clientcert, sni=sni, **kwargs)
+
+ # TODO: read ALPN from client and use same list for server conn
+
+ self.convert_to_ssl(cert=clientcert, sni=sni, alpn_protos=['h2'], **kwargs)
self.sni = sni
self.timestamp_ssl_setup = utils.timestamp()