pub struct TlsInfo {
pub sni: Option<Arc<str>>,
pub alpn: Option<Arc<[u8]>>,
pub version: Option<TlsVersion>,
pub peer_cert: Option<Arc<PeerCertificate>>,
pub zero_rtt_used: bool,
}Fields§
§sni: Option<Arc<str>>Negotiated SNI value, lower-cased. Stored as Arc<str> so
predicate readers can hand out borrowed slices and the
listener-side population path can reuse the same arc across
multiple TlsInfo snapshots for the same connection.
alpn: Option<Arc<[u8]>>Negotiated ALPN bytes. Arc<[u8]> for the same reason — the
hot alpn.clone() patterns now bump a refcount.
version: Option<TlsVersion>§peer_cert: Option<Arc<PeerCertificate>>§zero_rtt_used: boolWhether the client’s request arrived (in part or wholly) as
TLS 1.3 0-RTT (early data). Set at handshake completion in the
engine’s run_tls from rustls’s is_early_data_accepted().
The L7 executor consults this together with the matched rule’s
allow_zero_rtt to decide whether to short-circuit the request
with a synthetic 425 Too Early. See
spec/crates/engine-tls.md § TLS 1.3 0-RTT (early data).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for TlsInfo
impl RefUnwindSafe for TlsInfo
impl Send for TlsInfo
impl Sync for TlsInfo
impl Unpin for TlsInfo
impl UnsafeUnpin for TlsInfo
impl UnwindSafe for TlsInfo
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more