diff --git a/src/client.rs b/src/client.rs index 8dd8fa243..881190892 100644 --- a/src/client.rs +++ b/src/client.rs @@ -17,12 +17,29 @@ pub struct Client { } impl Client { + pub fn connect(server: &str, port: u16) -> QuicResult { + ConnectFuture::new(Self::new(server, port)?) + } + + pub fn connect_with_tls_config( + server: &str, + port: u16, + config: tls::ClientConfig, + ) -> QuicResult { + let tls = tls::client_session(Some(config), server, &ClientTransportParameters::default())?; + ConnectFuture::new(Self::with_state( + server, + port, + ConnectionState::new(tls, None), + )?) + } + pub(crate) fn new(server: &str, port: u16) -> QuicResult { let tls = tls::client_session(None, server, &ClientTransportParameters::default())?; Self::with_state(server, port, ConnectionState::new(tls, None)) } - pub fn with_state( + pub(crate) fn with_state( server: &str, port: u16, conn_state: ConnectionState, @@ -45,10 +62,6 @@ impl Client { }) } - pub fn connect(server: &str, port: u16) -> QuicResult { - ConnectFuture::new(Self::new(server, port)?) - } - fn poll_send(&mut self) -> Poll<(), QuicError> { if let Some(buf) = self.conn_state.queued()? { let len = try_ready!(self.socket.poll_send(&buf)); diff --git a/src/tls.rs b/src/tls.rs index 495dbba65..85d4f6e6f 100644 --- a/src/tls.rs +++ b/src/tls.rs @@ -1,5 +1,5 @@ use rustls::quic::{ClientQuicExt, ServerQuicExt}; -use rustls::{ClientConfig, KeyLogFile, NoClientAuth, ProtocolVersion, TLSError}; +use rustls::{KeyLogFile, NoClientAuth, ProtocolVersion, TLSError}; use std::io::Cursor; use std::sync::Arc; @@ -13,7 +13,8 @@ use types::Side; use webpki::{DNSNameRef, TLSServerTrustAnchors}; use webpki_roots; -pub use rustls::{Certificate, ClientSession, PrivateKey, ServerConfig, ServerSession, Session}; +pub use rustls::{Certificate, PrivateKey}; +pub use rustls::{ClientConfig, ClientSession, ServerConfig, ServerSession, Session}; pub fn client_session( config: Option,