diff --git a/src/main.rs b/src/main.rs index be868b2..0204791 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,10 @@ use { async_std::{ - net::TcpListener, + net::{TcpListener, TcpStream}, prelude::*, - task::block_on, + task, }, + async_tls::TlsAcceptor, rustls::{ internal::pemfile::{certs, rsa_private_keys}, }, @@ -11,11 +12,15 @@ use { error::Error, fs::File, io::BufReader, + sync::Arc, }, }; pub type Result = std::result::Result>; +async fn handle_connection(_: TlsAcceptor, _: TcpStream) { +} + fn main() -> Result { let certs = certs(&mut BufReader::new(File::open("tests/cert.pem")?)) .expect("Error reading certificate file"); @@ -24,14 +29,20 @@ fn main() -> Result { let mut config = rustls::ServerConfig::new(rustls::NoClientAuth::new()); config.set_single_cert(certs, keys.remove(0))?; + let acceptor = TlsAcceptor::from(Arc::new(config)); let addr = "0.0.0.0:1965"; - block_on(async { + task::block_on(async { let listener = TcpListener::bind(addr).await?; let mut incoming = listener.incoming(); while let Some(stream) = incoming.next().await { + let acceptor = acceptor.clone(); + let stream = stream?; + task::spawn(async { + handle_connection(acceptor, stream).await; + }); } Ok(())