diff --git a/quinn/src/connect.rs b/quinn/src/connect.rs new file mode 100644 index 000000000..1ac08703e --- /dev/null +++ b/quinn/src/connect.rs @@ -0,0 +1,21 @@ +use std::{ + io, + net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}, +}; + +use crate::{ClientConfig, Connecting, Endpoint}; + +/// Connect to `server_address`, authenticating it as `server_name`, using a new endpoint +pub fn connect( + config: ClientConfig, + server_address: SocketAddr, + server_name: &str, +) -> io::Result { + let bind_addr = match server_address { + SocketAddr::V6(_) => IpAddr::from(Ipv6Addr::UNSPECIFIED), + SocketAddr::V4(_) => IpAddr::from(Ipv4Addr::UNSPECIFIED), + }; + let endpoint = Endpoint::client(SocketAddr::new(bind_addr, 0))?; + let fut = endpoint.connect_with(config, server_address, server_name)?; + Ok(fut) +} diff --git a/quinn/src/lib.rs b/quinn/src/lib.rs index 9ce8f04e5..39fe06c75 100644 --- a/quinn/src/lib.rs +++ b/quinn/src/lib.rs @@ -42,6 +42,7 @@ use std::time::Duration; mod broadcast; +mod connect; mod connection; mod endpoint; mod mutex; @@ -55,6 +56,7 @@ pub use proto::{ Transmit, TransportConfig, VarInt, }; +pub use crate::connect::connect; pub use crate::connection::{ Connecting, Connection, Datagrams, IncomingBiStreams, IncomingUniStreams, NewConnection, OpenBi, OpenUni, SendDatagramError, ZeroRttAccepted,