aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2011-07-23 13:37:06 +1200
committerAldo Cortesi <aldo@nullcube.com>2011-07-23 13:37:06 +1200
commit3648c7953afc67df4012e9d5404ba5ee6e8b37d4 (patch)
tree7403ea17a8e00a92f50992905d32d3e0bbfa10bf
parent4043829cf2d60388133974e12bf45c7e61805189 (diff)
downloadmitmproxy-3648c7953afc67df4012e9d5404ba5ee6e8b37d4.tar.gz
mitmproxy-3648c7953afc67df4012e9d5404ba5ee6e8b37d4.tar.bz2
mitmproxy-3648c7953afc67df4012e9d5404ba5ee6e8b37d4.zip
Extend eventlog information.
Also, squash an SSL-related bug revealed by the extended logging.
-rw-r--r--libmproxy/dump.py5
-rw-r--r--libmproxy/proxy.py26
2 files changed, 23 insertions, 8 deletions
diff --git a/libmproxy/dump.py b/libmproxy/dump.py
index 75628631..e3d462ea 100644
--- a/libmproxy/dump.py
+++ b/libmproxy/dump.py
@@ -139,7 +139,10 @@ class DumpMaster(flow.FlowMaster):
def handle_clientdisconnect(self, c):
if self.eventlog:
- print >> self.outfile, "Disconnect from: %s:%s"%c.client_conn.address
+ print >> self.outfile, "Disconnect from: %s:%s"%c.client_conn.address,
+ print >> self.outfile, "(handled %s requests)"%c.client_conn.requestcount
+ if c.client_conn.connection_error:
+ print >> self.outfile, "\terror: %s"%c.client_conn.connection_error
return flow.FlowMaster.handle_clientconnect(self, c)
def handle_request(self, r):
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