aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/protocol/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/protocol/base.py')
-rw-r--r--mitmproxy/protocol/base.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/mitmproxy/protocol/base.py b/mitmproxy/protocol/base.py
index bf0cbbae..da6e8356 100644
--- a/mitmproxy/protocol/base.py
+++ b/mitmproxy/protocol/base.py
@@ -114,7 +114,15 @@ class ServerConnectionMixin(object):
def __init__(self, server_address=None):
super(ServerConnectionMixin, self).__init__()
- self.server_conn = models.ServerConnection(server_address, (self.config.options.listen_host, 0))
+
+ self.server_conn = None
+ if self.config.options.spoof_source_address:
+ self.server_conn = models.ServerConnection(
+ server_address, (self.ctx.client_conn.address.host, 0), True)
+ else:
+ self.server_conn = models.ServerConnection(
+ server_address, (self.config.options.listen_host, 0))
+
self.__check_self_connect()
def __check_self_connect(self):
@@ -151,11 +159,15 @@ class ServerConnectionMixin(object):
"""
self.log("serverdisconnect", "debug", [repr(self.server_conn.address)])
address = self.server_conn.address
- source_address = self.server_conn.source_address
self.server_conn.finish()
self.server_conn.close()
self.channel.tell("serverdisconnect", self.server_conn)
- self.server_conn = models.ServerConnection(address, (source_address.host, 0))
+
+ self.server_conn = models.ServerConnection(
+ address,
+ (self.server_conn.source_address.host, 0),
+ self.config.options.spoof_source_address
+ )
def connect(self):
"""