Exemple #1
0
    def parse_http2_request(self):

        self.raw_requestdata = self.connection.read(9)

        frame_header = Frame.parse_header(self.raw_requestdata)

        frm_len, frm_type, frm_flag, frm_id = frame_header

        while frm_len + 9 > len(self.raw_requestdata):
            self.raw_requestdata += self.connection.read(frm_len - len(self.raw_requestdata) + 9)  # read  left data

        stream = self.http2_connection.get_stream(frm_id)
        stream.receive_frame(frame_header, self.raw_requestdata)

        if stream.is_wait_for_res:

            print('end stream id : ', stream.id, ' frm_id ', frm_id)

            self.headers = stream._client_headers
            # self.request_version = 'HTTP/2.0' always
            self.requestline = stream.method + ' ' + stream.path + ' HTTP/2.0'  # virtual request line
            self.path = stream.path
            self.command = stream.method
            self.response_stream = stream

            self.stream = stream

            return True  # handle one request

        return False