aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-04-02 21:33:51 +0200
committerMaximilian Hils <git@maximilianhils.com>2016-04-02 21:33:51 +0200
commit050431fdd651016a71b895db384b53983319184e (patch)
tree1663c99a2eb28d719706c2507aae4d1730ceec86
parent610842cda582a543a7cc6eb5040f9fb31befdb76 (diff)
downloadmitmproxy-050431fdd651016a71b895db384b53983319184e.tar.gz
mitmproxy-050431fdd651016a71b895db384b53983319184e.tar.bz2
mitmproxy-050431fdd651016a71b895db384b53983319184e.zip
improve timing display
-rw-r--r--mitmproxy/console/flowdetailview.py110
-rw-r--r--mitmproxy/flow.py12
2 files changed, 64 insertions, 58 deletions
diff --git a/mitmproxy/console/flowdetailview.py b/mitmproxy/console/flowdetailview.py
index 8e3a47ae..d338b6bc 100644
--- a/mitmproxy/console/flowdetailview.py
+++ b/mitmproxy/console/flowdetailview.py
@@ -5,7 +5,7 @@ from .. import utils
def maybe_timestamp(base, attr):
- if base and getattr(base, attr):
+ if base is not None and getattr(base, attr):
return utils.format_timestamp_with_milli(getattr(base, attr))
else:
return "active"
@@ -89,65 +89,71 @@ def flowdetails(state, flow):
parts = []
- parts.append(
- [
- "Client conn. established",
- maybe_timestamp(cc, "timestamp_start")
- ]
- )
- parts.append(
- [
- "Server conn. initiated",
- maybe_timestamp(sc, "timestamp_start")
- ]
- )
- parts.append(
- [
- "Server conn. TCP handshake",
- maybe_timestamp(sc, "timestamp_tcp_setup")
- ]
- )
- if sc.ssl_established:
+ if cc is not None and cc.timestamp_start:
parts.append(
[
- "Server conn. SSL handshake",
- maybe_timestamp(sc, "timestamp_ssl_setup")
+ "Client conn. established",
+ maybe_timestamp(cc, "timestamp_start")
]
)
+ if cc.ssl_established:
+ parts.append(
+ [
+ "Client conn. TLS handshake",
+ maybe_timestamp(cc, "timestamp_ssl_setup")
+ ]
+ )
+ if sc is not None and sc.timestamp_start:
parts.append(
[
- "Client conn. SSL handshake",
- maybe_timestamp(cc, "timestamp_ssl_setup")
+ "Server conn. initiated",
+ maybe_timestamp(sc, "timestamp_start")
+ ]
+ )
+ parts.append(
+ [
+ "Server conn. TCP handshake",
+ maybe_timestamp(sc, "timestamp_tcp_setup")
+ ]
+ )
+ if sc.ssl_established:
+ parts.append(
+ [
+ "Server conn. TLS handshake",
+ maybe_timestamp(sc, "timestamp_ssl_setup")
+ ]
+ )
+ if req is not None and req.timestamp_start:
+ parts.append(
+ [
+ "First request byte",
+ maybe_timestamp(req, "timestamp_start")
+ ]
+ )
+ parts.append(
+ [
+ "Request complete",
+ maybe_timestamp(req, "timestamp_end")
+ ]
+ )
+ if resp is not None and resp.timestamp_start:
+ parts.append(
+ [
+ "First response byte",
+ maybe_timestamp(resp, "timestamp_start")
+ ]
+ )
+ parts.append(
+ [
+ "Response complete",
+ maybe_timestamp(resp, "timestamp_end")
]
)
- parts.append(
- [
- "First request byte",
- maybe_timestamp(req, "timestamp_start")
- ]
- )
- parts.append(
- [
- "Request complete",
- maybe_timestamp(req, "timestamp_end")
- ]
- )
- parts.append(
- [
- "First response byte",
- maybe_timestamp(resp, "timestamp_start")
- ]
- )
- parts.append(
- [
- "Response complete",
- maybe_timestamp(resp, "timestamp_end")
- ]
- )
- # sort operations by timestamp
- parts = sorted(parts, key=lambda p: p[1])
+ if parts:
+ # sort operations by timestamp
+ parts = sorted(parts, key=lambda p: p[1])
- text.append(urwid.Text([("head", "Timing:")]))
- text.extend(common.format_keyvals(parts, key="key", val="text", indent=4))
+ text.append(urwid.Text([("head", "Timing:")]))
+ text.extend(common.format_keyvals(parts, key="key", val="text", indent=4))
return searchable.Searchable(state, text)
diff --git a/mitmproxy/flow.py b/mitmproxy/flow.py
index 781ea150..8ba9b7f9 100644
--- a/mitmproxy/flow.py
+++ b/mitmproxy/flow.py
@@ -838,9 +838,9 @@ class FlowMaster(controller.Master):
address=dict(address=(host, port), use_ipv6=False),
clientcert=None,
ssl_established=False,
- timestamp_start=time.time(),
- timestamp_end=time.time(),
- timestamp_ssl_setup=time.time()
+ timestamp_start=None,
+ timestamp_end=None,
+ timestamp_ssl_setup=None
))
s = ServerConnection.from_state(dict(
@@ -850,9 +850,9 @@ class FlowMaster(controller.Master):
sni=host,
source_address=dict(address=('', 0), use_ipv6=False),
ssl_established=True,
- timestamp_start=time.time(),
- timestamp_tcp_setup=time.time(),
- timestamp_ssl_setup=time.time(),
+ timestamp_start=None,
+ timestamp_tcp_setup=None,
+ timestamp_ssl_setup=None,
timestamp_end=None,
via=None
))