diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2011-07-23 13:37:06 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2011-07-23 13:37:06 +1200 |
commit | 3648c7953afc67df4012e9d5404ba5ee6e8b37d4 (patch) | |
tree | 7403ea17a8e00a92f50992905d32d3e0bbfa10bf /libmproxy/proxy.py | |
parent | 4043829cf2d60388133974e12bf45c7e61805189 (diff) | |
download | mitmproxy-3648c7953afc67df4012e9d5404ba5ee6e8b37d4.tar.gz mitmproxy-3648c7953afc67df4012e9d5404ba5ee6e8b37d4.tar.bz2 mitmproxy-3648c7953afc67df4012e9d5404ba5ee6e8b37d4.zip |
Extend eventlog information.
Also, squash an SSL-related bug revealed by the extended logging.
Diffstat (limited to 'libmproxy/proxy.py')
-rw-r--r-- | libmproxy/proxy.py | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py index 5051492c..644a8099 100644 --- a/libmproxy/proxy.py +++ b/libmproxy/proxy.py @@ -443,6 +443,8 @@ class ClientConnect(controller.Msg): """ self.address = address self.close = False + self.requestcount = 0 + self.connection_error = None controller.Msg.__init__(self) def __eq__(self, other): @@ -620,10 +622,14 @@ class ProxyHandler(SocketServer.StreamRequestHandler): def handle_request(self, cc): server, request, err = None, None, None try: - request = self.read_request(cc) + try: + request = self.read_request(cc) + except IOError, v: + raise IOError, "Reading request: %s"%v if request is None: cc.close = True return + cc.requestcount += 1 request = request.send(self.mqueue) if request is None: cc.close = True @@ -636,7 +642,10 @@ class ProxyHandler(SocketServer.StreamRequestHandler): else: server = ServerConnection(request) server.send_request(request) - response = server.read_response() + try: + response = server.read_response() + except IOError, v: + raise IOError, "Reading response: %s"%v response = response.send(self.mqueue) if response is None: server.terminate() @@ -644,13 +653,16 @@ class ProxyHandler(SocketServer.StreamRequestHandler): cc.close = True return self.send_response(response) - except IOError: + except IOError, v: + cc.connection_error = v cc.close = True except ProxyError, e: - err = Error(request, e.msg) - err.send(self.mqueue) cc.close = True - self.send_error(e.code, e.msg) + cc.connection_error = "%s: %s"%(e.code, e.msg) + if request: + err = Error(request, e.msg) + err.send(self.mqueue) + self.send_error(e.code, e.msg) if server: server.terminate() @@ -689,7 +701,7 @@ class ProxyHandler(SocketServer.StreamRequestHandler): keyfile = self.config.certfile or self.config.cacert, server_side = True, ssl_version = ssl.PROTOCOL_SSLv23, - do_handshake_on_connect = False + do_handshake_on_connect = True ) if sys.version_info[1] > 6: kwargs["ciphers"] = self.config.ciphers |