Uses of Class
org.microproxy.Http3Options.Builder
Packages that use Http3Options.Builder
-
Uses of Http3Options.Builder in org.microproxy
Methods in org.microproxy that return Http3Options.BuilderModifier and TypeMethodDescriptionHttp3Options.Builder.altSvc(boolean advertise) Whether a reverse proxy serving HTTP/3 addsAlt-Svc: h3=":<port>"to the responses it sends over TCP (default on), so that clients find its HTTP/3 listener.Http3Options.Builder.altSvcMaxAge(Duration maxAge) How long clients may remember the proxy's HTTP/3 advertisement (themaparameter, default 24 hours).static Http3Options.BuilderHttp3Options.builder()Starts a builder with the default settings.Http3Options.Builder.connectionReceiveWindow(long bytes) QUIC's flow-control window per connection (default 1 MiB), for all its streams together.Http3Options.Builder.connectUdpIdleTimeout(Duration timeout) How long a CONNECT-UDP flow lives without a datagram in either direction (default 60 s), after which the proxy closes its socket and ends the client's stream.Http3Options.Builder.connectUdpInterceptQuic(boolean intercept) Whether QUIC inside CONNECT-UDP flows is decided on as transparent QUIC is (default false: relayed as any UDP).Http3Options.Builder.connectUdpMaxFlows(int total, int perConnection) The CONNECT-UDP flows the proxy relays at once (default 4096), and that one client connection may have open (default 64); each has a UDP socket of its own.Http3Options.Builder.connectUdpQueue(int datagrams, long bytes) The datagrams (default 128) and bytes (default 512 KiB) a CONNECT-UDP flow queues in each direction while the other side is not ready for them (a client that does not read its stream, so that the capsules to it wait for flow control, a target socket that does not keep up).Http3Options.Builder.connectUdpQuicPorts(int... ports) The target ports of the CONNECT-UDP flows whose QUICconnectUdpInterceptQuicdecides on (default 443); none for every port.Http3Options.Builder.connectUdpReleaseWait(Duration wait) How long a CONNECT-UDP request that finds the proxy's bound on flows (connectUdpMaxFlows) full waits for a place, while flows that are already ending still hold theirs (default 250 ms; zero refuses at once).Http3Options.Builder.connectUdpTemplate(String template) The URI template that CONNECT-UDP requests (MASQUE, RFC 9298) name their target with, on a forward proxy's HTTP/3 listener and, over HTTP/2 and HTTP/1.1, its TCP listener (HttpProxyServerBootstrap.withConnectUdp(boolean)): by default the well-known/.well-known/masque/udp/{target_host}/{target_port}/.Http3Options.Builder.maxConcurrentStreams(int n) Request streams a client may have open at once (default 100): QUIC's limit on the bidirectional streams it may open, which the transport enforces and raises as streams end.Http3Options.Builder.maxFieldSectionSize(long bytes) The largest field section the proxy accepts, counted as HTTP/3 counts it (names and values plus 32 octets per field), advertised as SETTINGS_MAX_FIELD_SECTION_SIZE.Http3Options.Builder.maxRapidResets(int n) Requests a client may cancel (reset) before their response completes, per window (default 100), against the Rapid Reset attack; more is a connection error H3_EXCESSIVE_LOAD.Http3Options.Builder.maxUnknownFrames(int n) Frames of unknown and reserved types (which HTTP/3 says to ignore), and empty DATA frames, a peer may send per window, on all its streams together (default 1000); more is a connection error H3_EXCESSIVE_LOAD.Http3Options.Builder.maxUnknownStreams(int n) Unidirectional streams of unknown and reserved types (which HTTP/3 says to abandon) a peer may open per window (default 100); more is a connection error H3_EXCESSIVE_LOAD.Http3Options.Builder.qlogDirectory(Path directory) Writes a qlog file for each of the proxy's QUIC connections, to clients and to servers, intodirectory(made if missing): JSON-SEQ (.sqlog) in the qlog main schema's format, named after the connection's original Destination Connection ID and whether the proxy was its server or its client.Http3Options.Builder.qlogMaxFileBytes(long max) The largest a qlog file grows (default 64 MiB): past it, the connection's later events are left out.Http3Options.Builder.qlogMaxFiles(int max) How many qlog files the directory keeps (default 1000): past it, the oldest the proxy wrote are deleted.Http3Options.Builder.qpackBlockedStreams(int n) Streams whose field sections may wait for the peer's QPACK encoder stream at once (default 16), advertised as SETTINGS_QPACK_BLOCKED_STREAMS.Http3Options.Builder.qpackMaxTableCapacity(long bytes) The QPACK dynamic table (default 4096 bytes): the most the proxy keeps for a peer's field sections, advertised as SETTINGS_QPACK_MAX_TABLE_CAPACITY, and the most it uses for its own. 0 turns the dynamic table off: field sections are encoded with the static table and literals only.Http3Options.Builder.quicCongestionControl(Http3Options.QuicCongestionControl control) The congestion controller of the proxy's QUIC connections, those its HTTP/3 and transparent QUIC listeners accept and those it opens to servers (defaultCUBIC).Http3Options.Builder.rateWindow(Duration window) The window the rate limits below count events in (default 10 s).Http3Options.Builder.retry(boolean retry) Whether the HTTP/3 listener answers a client's first packet with a QUIC Retry, so that only clients that can receive at their address cost it a handshake (default off: it costs every client a round trip).Http3Options.Builder.streamReceiveWindow(long bytes) QUIC's flow-control window per stream (default 256 KiB): the most a peer sends on a stream before the proxy has read it, request bodies from clients and response bodies from servers alike.Http3Options.toBuilder()Starts a builder initialized with these settings.Http3Options.Builder.transparentMaxBufferedBytes(long bytes) The bytes of datagrams the transparent QUIC listener holds for all its new clients together (default 8 MiB); each one may hold 16 datagrams at most.Http3Options.Builder.transparentMaxPending(int total, int perSource) The new clients (half-open QUIC flows: Initials whose ClientHello is being read or decided on) the transparent QUIC listener holds at once (default 1024), and from one IP address (default 32).Http3Options.Builder.transparentMaxRelayFlows(int total, int perSource) The QUIC flows the transparent QUIC listener relays at once (default 4096), and for one IP address (default 256); each has a UDP socket to its server.Http3Options.Builder.transparentPendingTimeout(Duration timeout) How long the transparent QUIC listener holds a new client's datagrams (default 5 s) for its ClientHello to complete and the proxy to decide on it; a client still pending then is forgotten, its datagrams dropped.Http3Options.Builder.transparentRelayIdleTimeout(Duration timeout) How long a QUIC flow that the transparent QUIC listener relays untouched (an ignored host, a client offering no HTTP/3) lives without a datagram in either direction (default 60 s), after which its socket to the server is closed.Http3Options.Builder.upstreamFailureTimeout(Duration timeout) How long a server whose QUIC handshake failed or timed out is reached over TCP only (default 5 minutes), before HTTP/3 is tried again.Http3Options.Builder.upstreamHandshakeTimeout(Duration timeout) How long a QUIC handshake with a server may take (default 1 s) before the request goes over TCP instead; the server then stays on TCP for theupstreamFailureTimeout.Http3Options.Builder.upstreamZeroRtt(boolean enabled) Whether the proxy sends requests to HTTP/3 servers as 0-RTT early data when it resumes a session with them (default on).Http3Options.Builder.zeroRtt(boolean enabled) Whether the HTTP/3 listeners (--http3and the clients the transparent QUIC listener intercepts) accept 0-RTT early data (default off).