rustls-config-stream

Crates.iorustls-config-stream
lib.rsrustls-config-stream
version0.2.0
created_at2025-09-18 07:19:38.587171+00
updated_at2025-09-19 21:54:11.325347+00
descriptionAsync stream backed Rustls ServerConfig and ClientConfig providers for cert/root hot-reload
homepage
repositoryhttps://github.com/dsykes16/rustls-config-stream
max_upload_size
id1844336
size74,707
(dsykes16)

documentation

README

rustls-config-stream

Crates.io Version Tests codecov Crates.io License dependency status CodeFactor

[rustls::ServerConfig] and [rustls::ClientConfig] providers backed async streams.

This module exposes a [ServerConfigProvider] and [ClientConfigProvider]. Both function identically, holding the current config in an ArcSwap, providing a get_config() method to load the current config as a standard Arc, and storing a new config when it arrives from a user-supplied stream via a [ServerConfigStreamBuilder] or [ClientConfigStreamBuilder].

The background task performs exponential backoff (10ms -> 10s, doubling) when the stream fails, and attempts to re-create the stream via the builder.

Usage

  • Implement [ServerConfigStreamBuilder] to produce a stream of fresh ServerConfig instances (e.g. reading from disk, a secret store, or watching a certificate manager).
  • Start the provider with [ServerConfigProvider::start].
  • Use [ServerConfigProvider::get_config] wherever you need the current config (e.g. inside an acceptor loop).
  • Optionally monitor liveness via [ServerConfigProvider::stream_healthy].
  • [ClientConfigProvider] works identically, only for [rustls::ClientConfig] instead of [rustls::ServerConfig].

Tracing

If the tracing feature is enabled, the provider will emit diagnostics (debug/info/error) about updates and reconnection attempts.

Commit count: 10

cargo fmt