aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/proxy.py
diff options
context:
space:
mode:
authorRouli <rouli.net@gmail.com>2013-01-17 17:32:56 +0200
committerRouli <rouli.net@gmail.com>2013-01-17 17:32:56 +0200
commit20fa6a30839500207d7d509fe3b8697dbd22a33e (patch)
tree6c2ae4aebb18cd9d05f4399d83b308dce67d1de5 /libmproxy/proxy.py
parent440a9f6bda8d645945e8c056a5e869c712dd2d69 (diff)
downloadmitmproxy-20fa6a30839500207d7d509fe3b8697dbd22a33e.tar.gz
mitmproxy-20fa6a30839500207d7d509fe3b8697dbd22a33e.tar.bz2
mitmproxy-20fa6a30839500207d7d509fe3b8697dbd22a33e.zip
changing requests and responses to have two timestamps, one marking their initiation, and the other their complete
Diffstat (limited to 'libmproxy/proxy.py')
-rwxr-xr-x[-rw-r--r--]libmproxy/proxy.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py
index b1ce310c..4c57aeb0 100644..100755
--- a/libmproxy/proxy.py
+++ b/libmproxy/proxy.py
@@ -180,14 +180,16 @@ class ProxyHandler(tcp.BaseHandler):
scheme, host, port = request.scheme, request.host, request.port
self.server_connect(scheme, host, port)
self.server_conn.send(request)
+ self.server_conn.rfile.reset_timestamps()
httpversion, code, msg, headers, content = http.read_response(
self.server_conn.rfile,
request.method,
self.config.body_size_limit
)
response = flow.Response(
- request, httpversion, code, msg, headers, content, self.server_conn.cert
+ request, httpversion, code, msg, headers, content, self.server_conn.cert, self.server_conn.rfile.first_byte_timestamp, utils.timestamp()
)
+
response = response._send(self.mqueue)
if response is None:
self.server_conn.terminate()
@@ -266,6 +268,7 @@ class ProxyHandler(tcp.BaseHandler):
self.sni = sn.decode("utf8").encode("idna")
def read_request(self, client_conn):
+ self.rfile.reset_timestamps()
if self.config.transparent_proxy:
host, port = self.config.transparent_proxy["resolver"].original_addr(self.connection)
if not self.ssl_established and (port in self.config.transparent_proxy["sslports"]):
@@ -289,7 +292,7 @@ class ProxyHandler(tcp.BaseHandler):
content = http.read_http_body_request(
self.rfile, self.wfile, headers, httpversion, self.config.body_size_limit
)
- return flow.Request(client_conn, httpversion, host, port, scheme, method, path, headers, content)
+ return flow.Request(client_conn, httpversion, host, port, scheme, method, path, headers, content, self.rfile.first_byte_timestamp, utils.timestamp())
elif self.config.reverse_proxy:
line = self.get_line(self.rfile)
if line == "":
@@ -303,7 +306,7 @@ class ProxyHandler(tcp.BaseHandler):
content = http.read_http_body_request(
self.rfile, self.wfile, headers, httpversion, self.config.body_size_limit
)
- return flow.Request(client_conn, httpversion, host, port, "http", method, path, headers, content)
+ return flow.Request(client_conn, httpversion, host, port, "http", method, path, headers, content, self.rfile.first_byte_timestamp, utils.timestamp())
else:
line = self.get_line(self.rfile)
if line == "":
@@ -340,7 +343,7 @@ class ProxyHandler(tcp.BaseHandler):
content = http.read_http_body_request(
self.rfile, self.wfile, headers, httpversion, self.config.body_size_limit
)
- return flow.Request(client_conn, httpversion, host, port, "https", method, path, headers, content)
+ return flow.Request(client_conn, httpversion, host, port, "https", method, path, headers, content, self.rfile.first_byte_timestamp, utils.timestamp())
else:
r = http.parse_init_proxy(line)
if not r:
@@ -350,7 +353,7 @@ class ProxyHandler(tcp.BaseHandler):
content = http.read_http_body_request(
self.rfile, self.wfile, headers, httpversion, self.config.body_size_limit
)
- return flow.Request(client_conn, httpversion, host, port, scheme, method, path, headers, content)
+ return flow.Request(client_conn, httpversion, host, port, scheme, method, path, headers, content, self.rfile.first_byte_timestamp, utils.timestamp())
def read_headers(self, authenticate=False):
headers = http.read_headers(self.rfile)