diff --git a/src/client.rs b/src/client.rs index c53bdf858..131ad5ff4 100644 --- a/src/client.rs +++ b/src/client.rs @@ -2,6 +2,7 @@ use futures::{Async, Future, Poll}; use super::{QuicError, QuicResult}; use endpoint::Endpoint; +use parameters::ClientTransportParameters; use tls; use types::Side; @@ -18,7 +19,7 @@ pub struct Client { impl Client { pub fn connect(server: &str, port: u16) -> QuicResult { - let tls = tls::client_session(None, server)?; + let tls = tls::client_session(None, server, &ClientTransportParameters::default())?; let endpoint = Endpoint::new(tls, Side::Client, None); connect(endpoint, server, port) } diff --git a/src/server.rs b/src/server.rs index c97fcba80..4f0a47e52 100644 --- a/src/server.rs +++ b/src/server.rs @@ -4,6 +4,7 @@ use super::{QuicError, QuicResult}; use crypto::Secret; use endpoint::Endpoint; use packet::{LongType, Packet}; +use parameters::ServerTransportParameters; use tls; use types::{ConnectionId, Side}; @@ -54,7 +55,7 @@ impl Future for Server { let cid = if partial.header.ptype() == Some(LongType::Initial) { let mut endpoint = Endpoint::new( - tls::server_session(&self.tls_config), + tls::server_session(&self.tls_config, &ServerTransportParameters::default()), Side::Server, Some(Secret::Handshake(dst_cid)), ); diff --git a/src/tests.rs b/src/tests.rs index 6c73a7d1e..ec40cbcf5 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -13,6 +13,7 @@ use client; use crypto::Secret; use endpoint::Endpoint; use packet::Packet; +use parameters::{ClientTransportParameters, ServerTransportParameters}; use server::Server; use tls; use types::{ConnectionId, Side}; @@ -85,7 +86,10 @@ fn test_handshake() { fn server_endpoint(hs_cid: ConnectionId) -> Endpoint { Endpoint::new( - tls::server_session(&Arc::new(build_server_config())), + tls::server_session( + &Arc::new(build_server_config()), + &ServerTransportParameters::default(), + ), Side::Server, Some(Secret::Handshake(hs_cid)), ) @@ -117,7 +121,11 @@ fn client_endpoint() -> Endpoint { webpki::trust_anchor_util::cert_der_as_trust_anchor(Input::from(&bytes)).unwrap(); let anchor_vec = vec![anchor]; let config = tls::build_client_config(Some(&webpki::TLSServerTrustAnchors(&anchor_vec))); - tls::client_session(Some(config), "localhost").unwrap() + tls::client_session( + Some(config), + "localhost", + &ClientTransportParameters::default(), + ).unwrap() }; Endpoint::new(tls, Side::Client, None) diff --git a/src/tls.rs b/src/tls.rs index 837c806a9..8f119bca8 100644 --- a/src/tls.rs +++ b/src/tls.rs @@ -14,13 +14,17 @@ use webpki_roots; pub use rustls::{Certificate, ClientSession, PrivateKey, ServerConfig, ServerSession, Session}; -pub fn client_session(config: Option, hostname: &str) -> QuicResult { +pub fn client_session( + config: Option, + hostname: &str, + params: &ClientTransportParameters, +) -> QuicResult { let pki_server_name = DNSNameRef::try_from_ascii_str(hostname) .map_err(|_| QuicError::InvalidDnsName(hostname.into()))?; Ok(ClientSession::new_quic( &Arc::new(config.unwrap_or(build_client_config(None))), pki_server_name, - to_vec(ClientTransportParameters::default()), + to_vec(params), )) } @@ -33,8 +37,11 @@ pub fn build_client_config(anchors: Option<&TLSServerTrustAnchors>) -> ClientCon config } -pub fn server_session(config: &Arc) -> ServerSession { - ServerSession::new_quic(config, to_vec(ServerTransportParameters::default())) +pub fn server_session( + config: &Arc, + params: &ServerTransportParameters, +) -> ServerSession { + ServerSession::new_quic(config, to_vec(params)) } pub fn build_server_config(cert_chain: Vec, key: PrivateKey) -> ServerConfig { @@ -93,7 +100,7 @@ where type TlsResult = (Vec, Option); -fn to_vec(val: T) -> Vec { +fn to_vec(val: &T) -> Vec { let mut bytes = Vec::new(); val.encode(&mut bytes); bytes