MCPcopy Create free account
hub / github.com/mitmproxy/mitmproxy / handle_h2_event

Method handle_h2_event

mitmproxy/proxy/layers/http/_http2.py:434–471  ·  view source on GitHub ↗
(self, event: h2.events.Event)

Source from the content-addressed store, hash-verified

432 yield from super()._handle_event(event)
433
434 def handle_h2_event(self, event: h2.events.Event) -> CommandGenerator[bool]:
435 if isinstance(event, h2.events.RequestReceived):
436 try:
437 (
438 host,
439 port,
440 method,
441 scheme,
442 authority,
443 path,
444 headers,
445 ) = parse_h2_request_headers(event.headers)
446 except ValueError as e:
447 yield from self.protocol_error(f"Invalid HTTP/2 request headers: {e}")
448 return True
449 request = http.Request(
450 host=host,
451 port=port,
452 method=method,
453 scheme=scheme,
454 authority=authority,
455 path=path,
456 http_version=b"HTTP/2.0",
457 headers=headers,
458 content=None,
459 trailers=None,
460 timestamp_start=time.time(),
461 timestamp_end=None,
462 )
463 self.streams[event.stream_id] = StreamState.HEADERS_RECEIVED
464 yield ReceiveHttp(
465 RequestHeaders(
466 event.stream_id, request, end_stream=bool(event.stream_ended)
467 )
468 )
469 return False
470 else:
471 return (yield from super().handle_h2_event(event))
472
473
474class Http2Client(Http2Connection):

Callers 1

handle_h2_eventMethod · 0.45

Calls 4

parse_h2_request_headersFunction · 0.85
ReceiveHttpClass · 0.85
RequestHeadersClass · 0.85
protocol_errorMethod · 0.80

Tested by

no test coverage detected