mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 00:01:36 +00:00
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
This commit is contained in:
parent
55ddf853cd
commit
52779d9db9
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user