aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/protocol
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-11-19 01:27:20 +0100
committerMaximilian Hils <git@maximilianhils.com>2014-11-19 01:27:20 +0100
commitec235941919c184641f9ab30f2df13ab7fea0414 (patch)
tree41cf2178aa76c87e5dee1557201df44620808234 /libmproxy/protocol
parent667fe0c20b43e2c5af5380591015b122da79b013 (diff)
downloadmitmproxy-ec235941919c184641f9ab30f2df13ab7fea0414.tar.gz
mitmproxy-ec235941919c184641f9ab30f2df13ab7fea0414.tar.bz2
mitmproxy-ec235941919c184641f9ab30f2df13ab7fea0414.zip
add sni support to LiveConnection.change_server
Diffstat (limited to 'libmproxy/protocol')
-rw-r--r--libmproxy/protocol/primitives.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/libmproxy/protocol/primitives.py b/libmproxy/protocol/primitives.py
index 1bf7f832..3be1cc45 100644
--- a/libmproxy/protocol/primitives.py
+++ b/libmproxy/protocol/primitives.py
@@ -174,7 +174,7 @@ class LiveConnection(object):
self._backup_server_conn = None
"""@type: libmproxy.proxy.connection.ServerConnection"""
- def change_server(self, address, ssl=None, force=False, persistent_change=False):
+ def change_server(self, address, ssl=None, sni=None, force=False, persistent_change=False):
"""
Change the server connection to the specified address.
@returns:
@@ -183,7 +183,14 @@ class LiveConnection(object):
"""
address = netlib.tcp.Address.wrap(address)
- ssl_mismatch = (ssl is not None and ssl != self.c.server_conn.ssl_established)
+ ssl_mismatch = (
+ ssl is not None and
+ (
+ ssl != self.c.server_conn.ssl_established
+ or
+ (sni is not None and sni != self.c.sni)
+ )
+ )
address_mismatch = (address != self.c.server_conn.address)
if persistent_change:
@@ -212,6 +219,8 @@ class LiveConnection(object):
self.c.set_server_address(address)
self.c.establish_server_connection(ask=False)
+ if sni:
+ self.c.sni = sni
if ssl:
self.c.establish_ssl(server=True)
return True