aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/flow.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@corte.si>2013-04-19 17:19:26 -0700
committerAldo Cortesi <aldo@corte.si>2013-04-19 17:19:26 -0700
commit61c794e08f7b2359f3a7a7658840d3f26db25e16 (patch)
tree12cd35054aa1d87b15a7d7f3836f89c15342bf0a /libmproxy/flow.py
parent793c41a5c475411df0ce8e24adec2219b6909934 (diff)
parentc6bf28f3f739fddb11b9d2dec25d0be87453ff3f (diff)
downloadmitmproxy-61c794e08f7b2359f3a7a7658840d3f26db25e16.tar.gz
mitmproxy-61c794e08f7b2359f3a7a7658840d3f26db25e16.tar.bz2
mitmproxy-61c794e08f7b2359f3a7a7658840d3f26db25e16.zip
Merge pull request #107 from rouli/master
Adding remote TCP and SSL setup timestamps
Diffstat (limited to 'libmproxy/flow.py')
-rw-r--r--libmproxy/flow.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 6d77fd88..50b30fe1 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -289,8 +289,15 @@ class Request(HTTPMsg):
method: HTTP method
timestamp_end: Seconds since the epoch signifying request transmission ended
+
+ tcp_setup_timestamp: Seconds since the epoch signifying remote TCP connection setup completion time
+ (or None, if request didn't results TCP setup)
+
+ ssl_setup_timestamp: Seconds since the epoch signifying remote SSL encryption setup completion time
+ (or None, if request didn't results SSL setup)
+
"""
- def __init__(self, client_conn, httpversion, host, port, scheme, method, path, headers, content, timestamp_start=None, timestamp_end=None):
+ def __init__(self, client_conn, httpversion, host, port, scheme, method, path, headers, content, timestamp_start=None, timestamp_end=None, tcp_setup_timestamp=None, ssl_setup_timestamp=None):
assert isinstance(headers, ODictCaseless)
self.client_conn = client_conn
self.httpversion = httpversion
@@ -299,6 +306,8 @@ class Request(HTTPMsg):
self.timestamp_start = timestamp_start or utils.timestamp()
self.timestamp_end = max(timestamp_end or utils.timestamp(), timestamp_start)
self.close = False
+ self.tcp_setup_timestamp = tcp_setup_timestamp
+ self.ssl_setup_timestamp = ssl_setup_timestamp
# Have this request's cookies been modified by sticky cookies or auth?
self.stickycookie = False
@@ -362,6 +371,8 @@ class Request(HTTPMsg):
self.content = state["content"]
self.timestamp_start = state["timestamp_start"]
self.timestamp_end = state["timestamp_end"]
+ self.tcp_setup_timestamp = state["tcp_setup_timestamp"]
+ self.ssl_setup_timestamp = state["ssl_setup_timestamp"]
def _get_state(self):
return dict(
@@ -375,7 +386,9 @@ class Request(HTTPMsg):
headers = self.headers._get_state(),
content = self.content,
timestamp_start = self.timestamp_start,
- timestamp_end = self.timestamp_end
+ timestamp_end = self.timestamp_end,
+ tcp_setup_timestamp = self.tcp_setup_timestamp,
+ ssl_setup_timestamp = self.ssl_setup_timestamp
)
@classmethod
@@ -392,6 +405,8 @@ class Request(HTTPMsg):
state["content"],
state["timestamp_start"],
state["timestamp_end"],
+ state["tcp_setup_timestamp"],
+ state["ssl_setup_timestamp"]
)
def __hash__(self):
@@ -809,6 +824,11 @@ class ClientConnect(StateObject):
self.requestcount = 0
self.error = None
+ def __str__(self):
+ if self.address:
+ return "%s:%d"%(self.address[0],self.address[1])
+ return "None"
+
def _load_state(self, state):
self.close = True
self.error = state["error"]