Class BeforeQuicAuthenticateEventArgs
Event arguments raised on a TransparentQuicProxyEndPoint before the QUIC TLS handshake
completes, analogous to BeforeSslAuthenticateEventArgs for transparent TCP endpoints.
Unlike its TCP counterpart, this event does not expose a DecryptSsl property:
QUIC always terminates TLS 1.3 at the proxy — there is no pass-through mode. Calling
Reject() is the only way to refuse the connection before the handshake finishes.
Thread-safety: each inbound QUIC connection fires a dedicated instance of this event on its own accept task. Handlers that mutate shared state must synchronize themselves.
Experimental: HTTP/3 support has not yet completed the full interop/soak/fuzz gate
process. Suppress TWP001 to opt in.
Inherited Members
Namespace: Titanium.Web.Proxy.EventArguments
Assembly: Titanium.Web.Proxy.dll
Syntax
[Experimental("TWP001")]
public class BeforeQuicAuthenticateEventArgs : EventArgs
Properties
| Edit this page View SourceAllowHttpProtocolTranslation
Whether the proxy may bridge a mismatch between the inbound H3 client and the outbound protocol
implied by UpstreamHttpProtocol. For example, when true and
Http11 is set, inbound H3 streams are bridged to HTTP/1.1
origin requests. Defaults to true for QUIC endpoints (H3 clients reaching
an H1/H2 origin is the common transparent-proxy case). Mirrors
AllowHttpProtocolTranslation.
Declaration
public bool AllowHttpProtocolTranslation { get; set; }
Property Value
| Type | Description |
|---|---|
| bool |
CustomUpStreamProxy
Per-connection upstream proxy override. null uses the server-level UpStreamHttpsProxy setting.
Declaration
public IExternalProxy? CustomUpStreamProxy { get; set; }
Property Value
| Type | Description |
|---|---|
| IExternalProxy |
ForwardHost
Per-connection forward target host override. Defaults to OriginalDestinationHost. Mirrors ForwardHttpsHostName.
Declaration
public string ForwardHost { get; set; }
Property Value
| Type | Description |
|---|---|
| string |
ForwardPort
Per-connection forward target port override. Defaults to OriginalDestinationPort. Mirrors ForwardHttpsPort.
Declaration
public int ForwardPort { get; set; }
Property Value
| Type | Description |
|---|---|
| int |
LocalEndPoint
The local UDP endpoint the proxy is listening on.
Declaration
public IPEndPoint LocalEndPoint { get; }
Property Value
| Type | Description |
|---|---|
| IPEndPoint |
OriginalDestinationHost
The pre-NAT original destination hostname resolved by the configured
IOriginalDestinationResolver, or the endpoint's ForwardHost fallback.
Declaration
public string OriginalDestinationHost { get; }
Property Value
| Type | Description |
|---|---|
| string |
OriginalDestinationPort
The pre-NAT original destination port.
Declaration
public int OriginalDestinationPort { get; }
Property Value
| Type | Description |
|---|---|
| int |
RemoteEndPoint
The remote UDP endpoint of the QUIC client.
Declaration
public IPEndPoint RemoteEndPoint { get; }
Property Value
| Type | Description |
|---|---|
| IPEndPoint |
SniHostName
The SNI hostname from the QUIC ClientHello, or null if the client did not
supply SNI. Do not use this as the authoritative original destination — always prefer
OriginalDestinationHost resolved by the configured
IOriginalDestinationResolver.
Declaration
public string? SniHostName { get; }
Property Value
| Type | Description |
|---|---|
| string |
UpstreamHttpProtocol
Controls which HTTP version the proxy uses on its own outbound connection to the origin for all
streams on this QUIC connection. Each stream may further override this per-request via
UpstreamHttpProtocol in BeforeRequest.
Declaration
public UpstreamHttpProtocol UpstreamHttpProtocol { get; set; }
Property Value
| Type | Description |
|---|---|
| UpstreamHttpProtocol |
Exceptions
| Type | Condition |
|---|---|
| ArgumentOutOfRangeException | The value is not a defined UpstreamHttpProtocol member. |
Methods
| Edit this page View SourceReject()
Rejects the QUIC connection by cancelling the accept task. The QUIC handshake will not complete and the client connection will be closed.
Declaration
public void Reject()