aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2015-08-16 23:33:11 +0200
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2015-08-18 21:08:42 +0200
commit231656859fcf82cb1252d1aad8dbc0f77dfb8bba (patch)
tree241bd55949b69ab6263b79d1f7d08ec6313fa264 /netlib
parent62416daa4a3776563556fb45ef9bd749fb44c334 (diff)
downloadmitmproxy-231656859fcf82cb1252d1aad8dbc0f77dfb8bba.tar.gz
mitmproxy-231656859fcf82cb1252d1aad8dbc0f77dfb8bba.tar.bz2
mitmproxy-231656859fcf82cb1252d1aad8dbc0f77dfb8bba.zip
TCPClient: more sophisticated address handling
Diffstat (limited to 'netlib')
-rw-r--r--netlib/http/semantics.py3
-rw-r--r--netlib/tcp.py34
2 files changed, 25 insertions, 12 deletions
diff --git a/netlib/http/semantics.py b/netlib/http/semantics.py
index 5b7fb80f..836af550 100644
--- a/netlib/http/semantics.py
+++ b/netlib/http/semantics.py
@@ -397,7 +397,8 @@ class Response(object):
size = utils.pretty_size(len(self.body))
else:
size = "content missing"
- return "<HTTPResponse: {status_code} {msg} ({contenttype}, {size})>".format(
+ # TODO: Remove "(unknown content type, content missing)" edge-case
+ return "<Response: {status_code} {msg} ({contenttype}, {size})>".format(
status_code=self.status_code,
msg=self.msg,
contenttype=self.headers.get_first(
diff --git a/netlib/tcp.py b/netlib/tcp.py
index b05e84f5..289618a7 100644
--- a/netlib/tcp.py
+++ b/netlib/tcp.py
@@ -283,7 +283,6 @@ class Reader(_FileLike):
raise NetLibSSLError(str(e))
-
class Address(object):
"""
@@ -498,6 +497,29 @@ class TCPClient(_Connection):
rbufsize = -1
wbufsize = -1
+ def __init__(self, address, source_address=None):
+ self.connection, self.rfile, self.wfile = None, None, None
+ self.address = address
+ self.source_address = Address.wrap(
+ source_address) if source_address else None
+ self.cert = None
+ self.ssl_established = False
+ self.ssl_verification_error = None
+ self.sni = None
+
+ @property
+ def address(self):
+ return self.__address
+
+ @address.setter
+ def address(self, address):
+ if self.connection:
+ raise RuntimeError("Cannot change server address after establishing connection")
+ if address:
+ self.__address = Address.wrap(address)
+ else:
+ self.__address = None
+
def close(self):
# Make sure to close the real socket, not the SSL proxy.
# OpenSSL is really good at screwing up, i.e. when trying to recv from a failed connection,
@@ -507,16 +529,6 @@ class TCPClient(_Connection):
else:
close_socket(self.connection)
- def __init__(self, address, source_address=None):
- self.address = Address.wrap(address)
- self.source_address = Address.wrap(
- source_address) if source_address else None
- self.connection, self.rfile, self.wfile = None, None, None
- self.cert = None
- self.ssl_established = False
- self.ssl_verification_error = None
- self.sni = None
-
def create_ssl_context(self, cert=None, alpn_protos=None, **sslctx_kwargs):
context = self._create_ssl_context(
alpn_protos=alpn_protos,