pub struct ServerConfig {
pub transport: Arc<TransportConfig>,
pub crypto: Arc<dyn ServerConfig>,
/* 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.
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 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 stateless retry token was issued for which it’s considered valid.
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.
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 moreAuto Trait Implementations§
impl Freeze for ServerConfig
impl !RefUnwindSafe for ServerConfig
impl Send for ServerConfig
impl Sync for ServerConfig
impl Unpin for ServerConfig
impl !UnwindSafe for ServerConfig
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)