aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Kriechbaumer <thomas@kriechbaumer.name>2016-05-11 16:06:11 -0500
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2016-05-11 16:47:58 -0500
commit7a813936c629213ca56b6520f67254bb70f26184 (patch)
tree8a90c570b3587fbfb18c68f87f385fec23af38f5
parentbbf7b6f690fd61af5900df924b833140dc21daee (diff)
downloadmitmproxy-7a813936c629213ca56b6520f67254bb70f26184.tar.gz
mitmproxy-7a813936c629213ca56b6520f67254bb70f26184.tar.bz2
mitmproxy-7a813936c629213ca56b6520f67254bb70f26184.zip
disable http2 header encoding, use bytes everywhere
-rw-r--r--mitmproxy/protocol/http2.py8
-rw-r--r--test/mitmproxy/test_protocol_http2.py8
2 files changed, 10 insertions, 6 deletions
diff --git a/mitmproxy/protocol/http2.py b/mitmproxy/protocol/http2.py
index 452952cd..702b1b33 100644
--- a/mitmproxy/protocol/http2.py
+++ b/mitmproxy/protocol/http2.py
@@ -91,14 +91,14 @@ class Http2Layer(Layer):
self.mode = mode
self.streams = dict()
self.server_to_client_stream_ids = dict([(0, 0)])
- self.client_conn.h2 = SafeH2Connection(self.client_conn, client_side=False)
+ self.client_conn.h2 = SafeH2Connection(self.client_conn, client_side=False, header_encoding=False)
# make sure that we only pass actual SSL.Connection objects in here,
# because otherwise ssl_read_select fails!
self.active_conns = [self.client_conn.connection]
def _initiate_server_conn(self):
- self.server_conn.h2 = SafeH2Connection(self.server_conn, client_side=True)
+ self.server_conn.h2 = SafeH2Connection(self.server_conn, client_side=True, header_encoding=False)
self.server_conn.h2.initiate_connection()
self.server_conn.send(self.server_conn.h2.data_to_send())
self.active_conns.append(self.server_conn.connection)
@@ -131,12 +131,12 @@ class Http2Layer(Layer):
eid = event.stream_id
if isinstance(event, h2.events.RequestReceived):
- headers = Headers([[str(k), str(v)] for k, v in event.headers])
+ headers = Headers([[k, v] for k, v in event.headers])
self.streams[eid] = Http2SingleStreamLayer(self, eid, headers)
self.streams[eid].timestamp_start = time.time()
self.streams[eid].start()
elif isinstance(event, h2.events.ResponseReceived):
- headers = Headers([[str(k), str(v)] for k, v in event.headers])
+ headers = Headers([[k, v] for k, v in event.headers])
self.streams[eid].queued_data_length = 0
self.streams[eid].timestamp_start = time.time()
self.streams[eid].response_headers = headers
diff --git a/test/mitmproxy/test_protocol_http2.py b/test/mitmproxy/test_protocol_http2.py
index 1da140d8..ceb9bbb2 100644
--- a/test/mitmproxy/test_protocol_http2.py
+++ b/test/mitmproxy/test_protocol_http2.py
@@ -1,3 +1,5 @@
+# coding=utf-8
+
from __future__ import (absolute_import, print_function, division)
import OpenSSL
@@ -36,7 +38,7 @@ class _Http2ServerBase(netlib_tservers.ServerTestBase):
class handler(netlib.tcp.BaseHandler):
def handle(self):
- h2_conn = h2.connection.H2Connection(client_side=False)
+ h2_conn = h2.connection.H2Connection(client_side=False, header_encoding=False)
preamble = self.rfile.read(24)
h2_conn.initiate_connection()
@@ -122,7 +124,7 @@ class _Http2TestBase(object):
client.convert_to_ssl(alpn_protos=[b'h2'])
- h2_conn = h2.connection.H2Connection(client_side=True)
+ h2_conn = h2.connection.H2Connection(client_side=True, header_encoding=False)
h2_conn.initiate_connection()
client.wfile.write(h2_conn.data_to_send())
client.wfile.flush()
@@ -163,6 +165,7 @@ class TestSimple(_Http2TestBase, _Http2ServerBase):
h2_conn.send_headers(1, [
(':status', '200'),
('foo', 'bar'),
+ ('föo', 'bär'),
])
h2_conn.send_data(1, b'foobar')
h2_conn.end_stream(1)
@@ -201,6 +204,7 @@ class TestSimple(_Http2TestBase, _Http2ServerBase):
assert len(self.master.state.flows) == 1
assert self.master.state.flows[0].response.status_code == 200
assert self.master.state.flows[0].response.headers['foo'] == 'bar'
+ assert self.master.state.flows[0].response.headers['föo'] == 'bär'
assert self.master.state.flows[0].response.body == b'foobar'