Start of handle_connection

This commit is contained in:
Matt Brubeck 2020-05-17 09:40:50 -07:00
parent dc41732486
commit 45faee45a7

View file

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