aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/http2/protocol.py
diff options
context:
space:
mode:
authorThomas Kriechbaumer <thomas@kriechbaumer.name>2015-06-15 15:31:58 +0200
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2015-06-16 15:00:28 +0200
commit1c124421e34d310c6e0577f20b595413d639a5c3 (patch)
tree342fb7c688eea62902921ad1591193b375f04cf2 /netlib/http2/protocol.py
parentd0a9d3cdda6d1f784a23ea4bd9efd3134e292628 (diff)
downloadmitmproxy-1c124421e34d310c6e0577f20b595413d639a5c3.tar.gz
mitmproxy-1c124421e34d310c6e0577f20b595413d639a5c3.tar.bz2
mitmproxy-1c124421e34d310c6e0577f20b595413d639a5c3.zip
http2: fix header_block_fragments and length
Diffstat (limited to 'netlib/http2/protocol.py')
-rw-r--r--netlib/http2/protocol.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/netlib/http2/protocol.py b/netlib/http2/protocol.py
index 682b7863..f17f998f 100644
--- a/netlib/http2/protocol.py
+++ b/netlib/http2/protocol.py
@@ -50,14 +50,18 @@ class HTTP2Protocol(object):
return True
def _receive_settings(self, hide=False):
- frm = self.read_frame(hide)
- assert isinstance(frm, frame.SettingsFrame)
+ while True:
+ frm = self.read_frame(hide)
+ if isinstance(frm, frame.SettingsFrame):
+ break
def _read_settings_ack(self, hide=False):
- settings_ack_frame = self.read_frame(hide)
- assert isinstance(settings_ack_frame, frame.SettingsFrame)
- assert settings_ack_frame.flags & frame.Frame.FLAG_ACK
- assert len(settings_ack_frame.settings) == 0
+ while True:
+ frm = self.read_frame(hide)
+ if isinstance(frm, frame.SettingsFrame):
+ assert settings_ack_frame.flags & frame.Frame.FLAG_ACK
+ assert len(settings_ack_frame.settings) == 0
+ break
def perform_server_connection_preface(self, force=False):
if force or not self.connection_preface_performed:
@@ -119,7 +123,7 @@ class HTTP2Protocol(object):
state=self,
flags=frame.Frame.FLAG_ACK),
hide)
- self._read_settings_ack(hide)
+ # self._read_settings_ack(hide)
def _create_headers(self, headers, stream_id, end_stream=True):
# TODO: implement max frame size checks and sending in chunks
@@ -219,10 +223,13 @@ class HTTP2Protocol(object):
if headers is None:
headers = []
+ body='foobar'
+
headers = [(b':status', bytes(str(code)))] + headers
stream_id = self.next_stream_id()
return list(itertools.chain(
self._create_headers(headers, stream_id, end_stream=(body is None)),
- self._create_body(body, stream_id)))
+ self._create_body(body, stream_id),
+ ))