Search Results for

    Show / Hide Table of Contents

    Namespace Titanium.Web.Proxy.Diagnostics

    Classes

    ClientTlsTiming

    Captures the timing of the client-facing (browser-to-proxy) TLS handshake performed while decrypting an HTTPS tunnel. Only populated when EnableRequestTimingCapture is enabled; otherwise no instance is ever allocated.

    HttpRequestTiming

    Captures the timing of a single HTTP request/response exchange handled by the proxy. Only populated (non-null on Timing) when EnableRequestTimingCapture is enabled; otherwise no instance is ever allocated and this class has zero impact on request handling.

    All timestamps are UTC wall-clock instants captured with UtcNow, in the order the proxy reaches each stage. The derived Duration/TimeToFirstByte properties are simple differences between two such instants and are null until both of their endpoints have been recorded - a session that never reaches a given stage (e.g. one answered synthetically during BeforeRequest, before any upstream connection is ever attempted, or one that fails before a response is received) simply leaves the later timestamps null; nothing throws.

    A request that is retried (a new upstream connection after RetryableServerConnectionException, or a re-request after a 401/407 challenge) overwrites the connection/send/receive timestamps with those of the latest attempt - AttemptCount tracks how many attempts were made in total. TotalDuration and ClientRequestReadDuration are unaffected by retries since they only depend on SessionCreatedAt.

    TunnelConnectTiming

    Captures CONNECT-phase milestones that dominate cold HTTPS page-load latency: certificate readiness, origin capability discovery (SVCB / HTTP/2 probe), and browser TLS completion. Only allocated when EnableRequestTimingCapture is enabled.

    UpstreamConnectionTiming

    Captures the timing of establishing a single upstream (server-facing) TCP/TLS connection. Only populated when EnableRequestTimingCapture is enabled; otherwise no instance is ever allocated.

    One instance is created per upstream connection, at the moment that connection is first established, and is never mutated afterwards. It is shared by every session that later reuses that same connection from the pool - reachable from any of them via UpstreamConnectionTiming.

    Address resolution can return more than one IP address for a hostname; the proxy tries them in order until one connects. The duration properties below reflect only the phases of the address that ultimately succeeded - FailedAddressAttempts tells you how many earlier addresses were tried and failed first.

    In this article
    Back to top Generated by DocFX