aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2015-09-18 18:05:50 +0200
committerMaximilian Hils <git@maximilianhils.com>2015-09-18 18:05:50 +0200
commit551d9f11e571eac495674f1c23cfd0dfa8af2cb7 (patch)
treef60fd855076260456b24911e4cd301dc0661d65c /netlib
parentd1904c2f52dfc7409ae275bb081f23635c94acc9 (diff)
downloadmitmproxy-551d9f11e571eac495674f1c23cfd0dfa8af2cb7.tar.gz
mitmproxy-551d9f11e571eac495674f1c23cfd0dfa8af2cb7.tar.bz2
mitmproxy-551d9f11e571eac495674f1c23cfd0dfa8af2cb7.zip
experimental: don't interfere with headers
Diffstat (limited to 'netlib')
-rw-r--r--netlib/http/http1/assemble.py20
-rw-r--r--netlib/http/models.py21
2 files changed, 9 insertions, 32 deletions
diff --git a/netlib/http/http1/assemble.py b/netlib/http/http1/assemble.py
index b65a6be0..c2b60a0f 100644
--- a/netlib/http/http1/assemble.py
+++ b/netlib/http/http1/assemble.py
@@ -10,7 +10,8 @@ def assemble_request(request):
if request.body == CONTENT_MISSING:
raise HttpException("Cannot assemble flow with CONTENT_MISSING")
head = assemble_request_head(request)
- return head + request.body
+ body = b"".join(assemble_body(request.headers, [request.body]))
+ return head + body
def assemble_request_head(request):
@@ -23,7 +24,8 @@ def assemble_response(response):
if response.body == CONTENT_MISSING:
raise HttpException("Cannot assemble flow with CONTENT_MISSING")
head = assemble_response_head(response)
- return head + response.body
+ body = b"".join(assemble_body(response.headers, [response.body]))
+ return head + body
def assemble_response_head(response):
@@ -74,20 +76,12 @@ def _assemble_request_line(request, form=None):
def _assemble_request_headers(request):
headers = request.headers.copy()
- for k in request._headers_to_strip_off:
- headers.pop(k, None)
if b"host" not in headers and request.scheme and request.host and request.port:
headers[b"Host"] = utils.hostport(
request.scheme,
request.host,
request.port
)
-
- # If content is defined (i.e. not None or CONTENT_MISSING), we always
- # add a content-length header.
- if request.body or request.body == b"":
- headers[b"Content-Length"] = str(len(request.body)).encode("ascii")
-
return bytes(headers)
@@ -100,8 +94,4 @@ def _assemble_response_line(response):
def _assemble_response_headers(response):
- headers = response.headers.copy()
- for k in response._headers_to_strip_off:
- headers.pop(k, None)
-
- return bytes(headers)
+ return bytes(response.headers)
diff --git a/netlib/http/models.py b/netlib/http/models.py
index bc681de3..ff854b13 100644
--- a/netlib/http/models.py
+++ b/netlib/http/models.py
@@ -92,7 +92,10 @@ class Headers(MutableMapping, object):
self.update(headers)
def __bytes__(self):
- return b"\r\n".join(b": ".join(field) for field in self.fields) + b"\r\n"
+ if self.fields:
+ return b"\r\n".join(b": ".join(field) for field in self.fields) + b"\r\n"
+ else:
+ return b""
if six.PY2:
__str__ = __bytes__
@@ -224,16 +227,6 @@ class Message(object):
class Request(Message):
- # This list is adopted legacy code.
- # We probably don't need to strip off keep-alive.
- _headers_to_strip_off = [
- 'Proxy-Connection',
- 'Keep-Alive',
- 'Connection',
- 'Transfer-Encoding',
- 'Upgrade',
- ]
-
def __init__(
self,
form_in,
@@ -467,12 +460,6 @@ class Request(Message):
class Response(Message):
- _headers_to_strip_off = [
- 'Proxy-Connection',
- 'Alternate-Protocol',
- 'Alt-Svc',
- ]
-
def __init__(
self,
http_version,