aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-06-10 13:17:18 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-06-10 13:17:18 +1200
commit52779d9db98dff042a0b2b5dca97440b520367df (patch)
treeecaed5067234758e7da28f7e21e908c7a948aa51
parent55ddf853cd8cac13bb6021ef92d21af85cb9b2f1 (diff)
downloadmitmproxy-52779d9db98dff042a0b2b5dca97440b520367df.tar.gz
mitmproxy-52779d9db98dff042a0b2b5dca97440b520367df.tar.bz2
mitmproxy-52779d9db98dff042a0b2b5dca97440b520367df.zip
Refactoring of proxy.py
- Correctly pass HTTP request version on to upstream servers - Adjust tests not to hang due to a pathod response with no content-length
-rw-r--r--libmproxy/flow.py11
-rw-r--r--libmproxy/proxy.py1
-rw-r--r--test/test_server.py16
-rw-r--r--test/tutils.py4
4 files changed, 19 insertions, 13 deletions
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 549942a5..b33707ca 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -536,7 +536,6 @@ class Request(HTTPMsg):
'proxy-connection',
'keep-alive',
'connection',
- 'content-length',
'transfer-encoding'
]
)
@@ -551,15 +550,15 @@ class Request(HTTPMsg):
headers["connection"] = ["close"]
if not _proxy:
return FMT % (
- self.method,
- self.path,
+ self.method,
+ self.path,
self.httpversion[0],
self.httpversion[1],
- str(headers),
+ str(headers),
content
)
else:
- return FMT_PROXY % (
+ return FMT_PROXY % (
self.method,
self.scheme,
self.host,
@@ -738,7 +737,7 @@ class Response(HTTPMsg):
headers = self.headers.copy()
utils.del_all(
headers,
- ['proxy-connection', 'connection', 'keep-alive', 'transfer-encoding']
+ ['proxy-connection', 'transfer-encoding']
)
content = self.content
if content:
diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py
index c7e5d972..3be20761 100644
--- a/libmproxy/proxy.py
+++ b/libmproxy/proxy.py
@@ -123,7 +123,6 @@ def read_http_body(rfile, connection, headers, all, limit):
content = rfile.read(limit if limit else None)
connection.close = True
else:
- connection.close = True
content = ""
return content
diff --git a/test/test_server.py b/test/test_server.py
index e6f055cc..d0e5d652 100644
--- a/test/test_server.py
+++ b/test/test_server.py
@@ -3,9 +3,17 @@ import time
import libpathod.test, requests
import tutils
+"""
+ Note that the choice of response code in these tests matters more than you
+ might think. libcurl treats a 304 response code differently from, say, a
+ 200 response code - it will correctly terminate a 304 response with no
+ content-length header, whereas it will block forever waiting for content
+ for a 200 response.
+"""
+
class Sanity(tutils.ProxTest):
def test_http(self):
- assert self.pathod("205").status_code == 205
+ assert self.pathod("304").status_code == 304
assert self.log()
@@ -23,10 +31,10 @@ class TestReverse(Sanity):
class TestProxy(tutils.ProxTest):
def test_http(self):
- f = self.pathod("205")
- assert f.status_code == 205
+ f = self.pathod("304")
+ assert f.status_code == 304
l = self.log()
assert l[0].address
assert "host" in l[1].headers
- assert l[2].code == 205
+ assert l[2].code == 304
diff --git a/test/tutils.py b/test/tutils.py
index 7852a8b8..849b9413 100644
--- a/test/tutils.py
+++ b/test/tutils.py
@@ -121,7 +121,7 @@ class ProxTest:
r = hurl.get(
"http://127.0.0.1:%s"%self.proxy.port + "/p/" + spec,
validate_cert=False,
- #debug=hurl.utils.stdout_debug
+ debug=hurl.utils.stdout_debug
)
return r
else:
@@ -129,7 +129,7 @@ class ProxTest:
self.urlbase + "/p/" + spec,
proxy=self.proxies,
validate_cert=False,
- #debug=hurl.utils.stdout_debug
+ debug=hurl.utils.stdout_debug
)
@property