From a7cd22f68354adb9a2a7efe0de3e344bc3c2e83a Mon Sep 17 00:00:00 2001 From: Benjamin Saunders Date: Fri, 5 Nov 2021 21:25:40 -0700 Subject: [PATCH] Move client protocol version into ClientConfig --- quinn-proto/src/config.rs | 26 +++++++++++++------------- quinn-proto/src/endpoint.rs | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/quinn-proto/src/config.rs b/quinn-proto/src/config.rs index b9b845753..d79e1554a 100644 --- a/quinn-proto/src/config.rs +++ b/quinn-proto/src/config.rs @@ -308,7 +308,6 @@ pub struct EndpointConfig { pub(crate) connection_id_generator_factory: Arc Box + Send + Sync>, pub(crate) supported_versions: Vec, - pub(crate) initial_version: u32, } impl EndpointConfig { @@ -320,7 +319,6 @@ impl EndpointConfig { reset_key, max_udp_payload_size: 1480u32.into(), // Typical internet MTU minus IPv4 and UDP overhead, rounded up to a multiple of 8 connection_id_generator_factory: Arc::new(cid_factory), - initial_version: DEFAULT_SUPPORTED_VERSIONS[0], supported_versions: DEFAULT_SUPPORTED_VERSIONS.to_vec(), } } @@ -373,17 +371,9 @@ impl EndpointConfig { } /// Override supported QUIC versions - pub fn supported_versions( - &mut self, - supported_versions: Vec, - initial_version: u32, - ) -> Result<&mut Self, ConfigError> { - if !supported_versions.contains(&initial_version) { - return Err(ConfigError::OutOfBounds); - } + pub fn supported_versions(&mut self, supported_versions: Vec) -> &mut Self { self.supported_versions = supported_versions; - self.initial_version = initial_version; - Ok(self) + self } } @@ -394,7 +384,6 @@ impl fmt::Debug for EndpointConfig { .field("max_udp_payload_size", &self.max_udp_payload_size) .field("cid_generator_factory", &"[ elided ]") .field("supported_versions", &self.supported_versions) - .field("initial_version", &self.initial_version) .finish() } } @@ -558,6 +547,9 @@ pub struct ClientConfig { /// Cryptographic configuration to use pub crypto: Arc, + + /// QUIC protocol version to use + pub(crate) version: u32, } impl ClientConfig { @@ -566,8 +558,15 @@ impl ClientConfig { Self { transport: Default::default(), crypto, + version: 1, } } + + /// Set the QUIC version to use + pub fn version(&mut self, version: u32) -> &mut Self { + self.version = version; + self + } } #[cfg(feature = "rustls")] @@ -603,6 +602,7 @@ impl fmt::Debug for ClientConfig { fmt.debug_struct("ClientConfig") .field("transport", &self.transport) .field("crypto", &"ClientConfig { elided }") + .field("version", &self.version) .finish() } } diff --git a/quinn-proto/src/endpoint.rs b/quinn-proto/src/endpoint.rs index 8e9582f09..9293016f7 100644 --- a/quinn-proto/src/endpoint.rs +++ b/quinn-proto/src/endpoint.rs @@ -380,7 +380,7 @@ impl Endpoint { let remote_id = RandomConnectionIdGenerator::new(MAX_CID_SIZE).generate_cid(); trace!(initial_dcid = %remote_id); let (ch, conn) = self.add_connection( - self.config.initial_version, + config.version, remote_id, remote_id, remote,