diff options
author | Maximilian Hils <git@maximilianhils.com> | 2014-11-19 01:27:20 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2014-11-19 01:27:20 +0100 |
commit | ec235941919c184641f9ab30f2df13ab7fea0414 (patch) | |
tree | 41cf2178aa76c87e5dee1557201df44620808234 /libmproxy/protocol | |
parent | 667fe0c20b43e2c5af5380591015b122da79b013 (diff) | |
download | mitmproxy-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.py | 13 |
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 |