pub struct ServerConfig {
pub transport: Arc<TransportConfig>,
pub crypto: Arc<dyn ServerConfig>,
pub validation_token: ValidationTokenConfig,
/* private fields */
}
Expand description
Parameters governing incoming connections
Default values should be suitable for most internet applications.
Fields§
§transport: Arc<TransportConfig>
Transport configuration to use for incoming connections
crypto: Arc<dyn ServerConfig>
TLS configuration used for incoming connections
Must be set to use TLS 1.3 only.
validation_token: ValidationTokenConfig
Configuration for sending and handling validation tokens
Implementations§
Source§impl ServerConfig
impl ServerConfig
Sourcepub fn new(
crypto: Arc<dyn ServerConfig>,
token_key: Arc<dyn HandshakeTokenKey>,
) -> ServerConfig
pub fn new( crypto: Arc<dyn ServerConfig>, token_key: Arc<dyn HandshakeTokenKey>, ) -> ServerConfig
Create a default config with a particular handshake token key
Sourcepub fn transport_config(
&mut self,
transport: Arc<TransportConfig>,
) -> &mut ServerConfig
pub fn transport_config( &mut self, transport: Arc<TransportConfig>, ) -> &mut ServerConfig
Set a custom TransportConfig
Sourcepub fn validation_token_config(
&mut self,
validation_token: ValidationTokenConfig,
) -> &mut ServerConfig
pub fn validation_token_config( &mut self, validation_token: ValidationTokenConfig, ) -> &mut ServerConfig
Set a custom ValidationTokenConfig
Sourcepub fn token_key(
&mut self,
value: Arc<dyn HandshakeTokenKey>,
) -> &mut ServerConfig
pub fn token_key( &mut self, value: Arc<dyn HandshakeTokenKey>, ) -> &mut ServerConfig
Private key used to authenticate data included in handshake tokens
Sourcepub fn retry_token_lifetime(&mut self, value: Duration) -> &mut ServerConfig
pub fn retry_token_lifetime(&mut self, value: Duration) -> &mut ServerConfig
Duration after a retry token was issued for which it’s considered valid
Defaults to 15 seconds.
Sourcepub fn migration(&mut self, value: bool) -> &mut ServerConfig
pub fn migration(&mut self, value: bool) -> &mut ServerConfig
Whether to allow clients to migrate to new addresses
Improves behavior for clients that move between different internet connections or suffer NAT rebinding. Enabled by default.
Sourcepub fn preferred_address_v4(
&mut self,
address: Option<SocketAddrV4>,
) -> &mut ServerConfig
pub fn preferred_address_v4( &mut self, address: Option<SocketAddrV4>, ) -> &mut ServerConfig
The preferred IPv4 address that will be communicated to clients during handshaking
If the client is able to reach this address, it will switch to it.
Sourcepub fn preferred_address_v6(
&mut self,
address: Option<SocketAddrV6>,
) -> &mut ServerConfig
pub fn preferred_address_v6( &mut self, address: Option<SocketAddrV6>, ) -> &mut ServerConfig
The preferred IPv6 address that will be communicated to clients during handshaking
If the client is able to reach this address, it will switch to it.
Sourcepub fn max_incoming(&mut self, max_incoming: usize) -> &mut ServerConfig
pub fn max_incoming(&mut self, max_incoming: usize) -> &mut ServerConfig
Maximum number of Incoming
to allow to exist at a time
An Incoming
comes into existence when an incoming connection attempt
is received and stops existing when the application either accepts it or otherwise disposes
of it. While this limit is reached, new incoming connection attempts are immediately
refused. Larger values have greater worst-case memory consumption, but accommodate greater
application latency in handling incoming connection attempts.
The default value is set to 65536. With a typical Ethernet MTU of 1500 bytes, this limits memory consumption from this to under 100 MiB–a generous amount that still prevents memory exhaustion in most contexts.
Sourcepub fn incoming_buffer_size(
&mut self,
incoming_buffer_size: u64,
) -> &mut ServerConfig
pub fn incoming_buffer_size( &mut self, incoming_buffer_size: u64, ) -> &mut ServerConfig
Maximum number of received bytes to buffer for each Incoming
An Incoming
comes into existence when an incoming connection attempt
is received and stops existing when the application either accepts it or otherwise disposes
of it. This limit governs only packets received within that period, and does not include
the first packet. Packets received in excess of this limit are dropped, which may cause
0-RTT or handshake data to have to be retransmitted.
The default value is set to 10 MiB–an amount such that in most situations a client would
not transmit that much 0-RTT data faster than the server handles the corresponding
Incoming
.
Sourcepub fn incoming_buffer_size_total(
&mut self,
incoming_buffer_size_total: u64,
) -> &mut ServerConfig
pub fn incoming_buffer_size_total( &mut self, incoming_buffer_size_total: u64, ) -> &mut ServerConfig
Maximum number of received bytes to buffer for all Incoming
collectively
An Incoming
comes into existence when an incoming connection attempt
is received and stops existing when the application either accepts it or otherwise disposes
of it. This limit governs only packets received within that period, and does not include
the first packet. Packets received in excess of this limit are dropped, which may cause
0-RTT or handshake data to have to be retransmitted.
The default value is set to 100 MiB–a generous amount that still prevents memory exhaustion in most contexts.
Sourcepub fn time_source(
&mut self,
time_source: Arc<dyn TimeSource>,
) -> &mut ServerConfig
pub fn time_source( &mut self, time_source: Arc<dyn TimeSource>, ) -> &mut ServerConfig
Object to get current SystemTime
This exists to allow system time to be mocked in tests, or wherever else desired.
Defaults to StdSystemTime
, which simply calls SystemTime::now()
.
Source§impl ServerConfig
impl ServerConfig
Sourcepub fn with_single_cert(
cert_chain: Vec<CertificateDer<'static>>,
key: PrivateKeyDer<'static>,
) -> Result<ServerConfig, Error>
pub fn with_single_cert( cert_chain: Vec<CertificateDer<'static>>, key: PrivateKeyDer<'static>, ) -> Result<ServerConfig, Error>
Create a server config with the given certificate chain to be presented to clients
Uses a randomized handshake token key.
Source§impl ServerConfig
impl ServerConfig
Sourcepub fn with_crypto(crypto: Arc<dyn ServerConfig>) -> ServerConfig
pub fn with_crypto(crypto: Arc<dyn ServerConfig>) -> ServerConfig
Create a server config with the given crypto::ServerConfig
Uses a randomized handshake token key.
Trait Implementations§
Source§impl Clone for ServerConfig
impl Clone for ServerConfig
Source§fn clone(&self) -> ServerConfig
fn clone(&self) -> ServerConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more