diff options
author | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2015-06-15 15:31:58 +0200 |
---|---|---|
committer | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2015-06-16 15:00:28 +0200 |
commit | 1c124421e34d310c6e0577f20b595413d639a5c3 (patch) | |
tree | 342fb7c688eea62902921ad1591193b375f04cf2 /netlib/http2/protocol.py | |
parent | d0a9d3cdda6d1f784a23ea4bd9efd3134e292628 (diff) | |
download | mitmproxy-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.py | 23 |
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), + )) |