aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2013-08-23 10:01:19 +1200
committerAldo Cortesi <aldo@nullcube.com>2013-08-23 10:25:44 +1200
commita2643b52f909719d4e0fe97e17d3d30f43669341 (patch)
treef00b8e8f5a6b99ff599c43f4163af53ce9b242ab /libmproxy
parent09f651247afa592ad8c7d9b65dcecb45d0a3b4e6 (diff)
downloadmitmproxy-a2643b52f909719d4e0fe97e17d3d30f43669341.tar.gz
mitmproxy-a2643b52f909719d4e0fe97e17d3d30f43669341.tar.bz2
mitmproxy-a2643b52f909719d4e0fe97e17d3d30f43669341.zip
Tweak timing display
- Remove elapsed time. Space is at a premium here, and this is somewhat redundant with the rate figure. We should display complete timing information somewhere in the detailed flow view. - Tone down the colour. Reserve highlights for stuff that should really pop out to the user. - Make rate calculation more acurate. Include header sizes. Use response start and end time, rather than request end and response end. This means that we show actual transfer rates, not including DNS requests and so forth.
Diffstat (limited to 'libmproxy')
-rw-r--r--libmproxy/console/common.py10
-rw-r--r--libmproxy/console/palettes.py1
-rw-r--r--libmproxy/flow.py2
-rw-r--r--libmproxy/proxy.py7
4 files changed, 10 insertions, 10 deletions
diff --git a/libmproxy/console/common.py b/libmproxy/console/common.py
index 74830237..006303a7 100644
--- a/libmproxy/console/common.py
+++ b/libmproxy/console/common.py
@@ -144,9 +144,7 @@ def raw_format_flow(f, focus, extended, padding):
if f["resp_ctype"]:
resp.append(fcol(f["resp_ctype"], rc))
resp.append(fcol(f["resp_clen"], rc))
-
- resp.append(fcol(f["resp_et"], "time"))
- resp.append(fcol(f["resp_rate"], "highlight"))
+ resp.append(fcol(f["resp_rate"], rc))
elif f["err_msg"]:
resp.append(fcol(SYMBOL_RETURN, "error"))
@@ -190,15 +188,15 @@ def format_flow(f, focus, extended=False, hostheader=False, padding=2):
else:
contentdesc = "[no content]"
- delta = f.response.timestamp_end - f.request.timestamp_start
- rate = utils.pretty_size(len(f.response.content) / delta)
+ delta = f.response.timestamp_end - f.response.timestamp_start
+ size = len(f.response.content) + f.response.get_header_size()
+ rate = utils.pretty_size(size / delta)
d.update(dict(
resp_code = f.response.code,
resp_is_replay = f.response.is_replay(),
resp_acked = f.response.reply.acked,
resp_clen = contentdesc,
- resp_et = "{0:2.0f}ms".format(delta * 1000),
resp_rate = "{0}/s".format(rate),
))
t = f.response.headers["content-type"]
diff --git a/libmproxy/console/palettes.py b/libmproxy/console/palettes.py
index df84a1e4..650cf261 100644
--- a/libmproxy/console/palettes.py
+++ b/libmproxy/console/palettes.py
@@ -35,7 +35,6 @@ palettes = {
('header', 'dark cyan', 'default'),
('highlight', 'white,bold', 'default'),
- ('time', 'light red', 'default'),
('intercept', 'brown', 'default', None, '#f60', 'default'),
('replay', 'light green', 'default', None, '#0f0', 'default'),
('ack', 'light red', 'default'),
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 84836d11..24042812 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -618,7 +618,7 @@ class Response(HTTPMsg):
self.headers, self.content = headers, content
self.cert = cert
self.timestamp_start = timestamp_start or utils.timestamp()
- self.timestamp_end = max(timestamp_end or utils.timestamp(), timestamp_start)
+ self.timestamp_end = timestamp_end or utils.timestamp()
self.replay = False
def _refresh_cookie(self, c, delta):
diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py
index b0c15463..75a54192 100644
--- a/libmproxy/proxy.py
+++ b/libmproxy/proxy.py
@@ -88,11 +88,13 @@ class RequestReplayThread(threading.Thread):
server = ServerConnection(self.config, r.scheme, r.host, r.port, r.host)
server.connect()
server.send(r)
+ tsstart = utils.timestamp()
httpversion, code, msg, headers, content = http.read_response(
server.rfile, r.method, self.config.body_size_limit
)
response = flow.Response(
- self.flow.request, httpversion, code, msg, headers, content, server.cert
+ self.flow.request, httpversion, code, msg, headers, content, server.cert,
+ server.rfile.first_byte_timestamp
)
self.channel.ask(response)
except (ProxyError, http.HttpError, tcp.NetLibError), v:
@@ -224,6 +226,7 @@ class ProxyHandler(tcp.BaseHandler):
request.ssl_setup_timestamp = sc.ssl_setup_timestamp
sc.rfile.reset_timestamps()
try:
+ tsstart = utils.timestamp()
httpversion, code, msg, headers, content = http.read_response(
sc.rfile,
request.method,
@@ -242,7 +245,7 @@ class ProxyHandler(tcp.BaseHandler):
response = flow.Response(
request, httpversion, code, msg, headers, content, sc.cert,
- sc.rfile.first_byte_timestamp, utils.timestamp()
+ sc.rfile.first_byte_timestamp
)
response_reply = self.channel.ask(response)
# Not replying to the server invalidates the server