Module

_h3_handler

HTTP/3 connection handler — manages QUIC/UDP streams via zoomies.

HTTP/3 uses QUIC (UDP) transport. Zoomies is sans-I/O: pounce owns the UDP loop and maintains a connection map. Each QUIC connection has an H3Connection; each HTTP/3 stream maps to one ASGI invocation.

Requires theh3 optional dependency (pip install bengal-pounce[h3]).

Classes

_PounceZeroRttPolicy 1
0-RTT policy that accepts early data at the TLS level. Application-layer safety (425 Too Early for…

0-RTT policy that accepts early data at the TLS level.

Application-layer safety (425 Too Early for unsafe methods) is enforced separately in the H3 event handler.

Methods

allow_0rtt 2 bool
def allow_0rtt(self, ticket_data: bytes, obfuscated_age: int) -> bool
Parameters
Name Type Description
ticket_data
obfuscated_age
Returns
bool
_ZoomiesConnection 7
Per-client QUIC + H3 connection state.

Per-client QUIC + H3 connection state.

Attributes

Name Type Description
quic Any
h3 Any
last_activity float
last_addr tuple[str, int]
stream_tasks dict[int, tuple[asyncio.Task[None], asyncio.Queue[dict[str, Any]]]]
stream_body_bytes dict[int, int]
stream_body_ended set[int]

Functions

_make_zero_rtt_policy 0 _PounceZeroRttPolicy
Create a 0-RTT policy for use with QuicConfiguration.
def _make_zero_rtt_policy() -> _PounceZeroRttPolicy
Returns
_PounceZeroRttPolicy
_create_zoomies_datagram_protocol 6 type
Factory that returns a ZoomiesDatagramProtocol class bound to app/config/logger…
def _create_zoomies_datagram_protocol(app: ASGIApp, config: ServerConfig, logger: logging.Logger, server: tuple[str, int], quic_config: Any, lifespan_state: dict[str, Any] | None = None) -> type

Factory that returns a ZoomiesDatagramProtocol class bound to app/config/logger/server.

Parameters
Name Type Description
app ASGIApp
config ServerConfig
logger logging.Logger
server tuple[str, int]
quic_config Any
lifespan_state dict[str, Any] | None Default:None
Returns
type
create_zoomies_datagram_protocol_factory 6 Callable[[], asyncio.Dat…
Create a factory for ZoomiesDatagramProtocol. Returns a no-arg callable suitab…
def create_zoomies_datagram_protocol_factory(app: ASGIApp, config: ServerConfig, logger: logging.Logger, server: tuple[str, int], quic_config: Any, lifespan_state: dict[str, Any] | None = None) -> Callable[[], asyncio.DatagramProtocol]

Create a factory for ZoomiesDatagramProtocol.

Returns a no-arg callable suitable for create_datagram_endpoint().

Parameters
Name Type Description
app ASGIApp
config ServerConfig
logger logging.Logger
server tuple[str, int]
quic_config Any
lifespan_state dict[str, Any] | None Default:None
Returns
Callable[[], asyncio.DatagramProtocol]