diff options
-rw-r--r-- | mitmproxy/proxy/protocol/base.py | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/mitmproxy/proxy/protocol/base.py b/mitmproxy/proxy/protocol/base.py index 7c0f78ae..f1b8da6c 100644 --- a/mitmproxy/proxy/protocol/base.py +++ b/mitmproxy/proxy/protocol/base.py @@ -96,15 +96,7 @@ class ServerConnectionMixin: def __init__(self, server_address=None): super().__init__() - self.server_conn = None - if self.config.options.spoof_source_address and self.config.options.upstream_bind_address == '': - self.server_conn = connections.ServerConnection( - server_address, (self.ctx.client_conn.address[0], 0), True) - else: - self.server_conn = connections.ServerConnection( - server_address, (self.config.options.upstream_bind_address, 0), - self.config.options.spoof_source_address - ) + self.server_conn = self.__make_server_conn(server_address) self.__check_self_connect() @@ -125,6 +117,16 @@ class ServerConnectionMixin: "The proxy shall not connect to itself.".format(repr(address)) ) + def __make_server_conn(self, server_address): + if self.config.options.spoof_source_address and self.config.options.upstream_bind_address == '': + return connections.ServerConnection( + server_address, (self.ctx.client_conn.address[0], 0), True) + else: + return connections.ServerConnection( + server_address, (self.config.options.upstream_bind_address, 0), + self.config.options.spoof_source_address + ) + def set_server(self, address): """ Sets a new server address. If there is an existing connection, it will be closed. @@ -146,11 +148,7 @@ class ServerConnectionMixin: self.server_conn.close() self.channel.tell("serverdisconnect", self.server_conn) - self.server_conn = connections.ServerConnection( - address, - (self.server_conn.source_address[0], 0), - self.config.options.spoof_source_address - ) + self.server_conn = self.__make_server_conn(address) def connect(self): """ |