-
async fn https_server(ports: Ports) {
let app = server_routes();
let addr = format!("{}:{}", env::var("HOST").unwrap(), ports.https);
println!("listening on {}", addr);
let rustls_config = rustls_server_config(
PathBuf::from(env::var("HTTPS_KEY").unwrap()),
PathBuf::from(env::var("HTTPS_CERT").unwrap()),
);
let tls_acceptor = TlsAcceptor::from(rustls_config);
let tcp_listener = TcpListener::bind(&addr).await.unwrap();
pin_mut!(tcp_listener);
loop {
let tower_service = app
.clone()
.into_make_service_with_connect_info::<SocketAddr>();
let tls_acceptor = tls_acceptor.clone();
// Wait for new tcp connection
let (cnx, addr) = tcp_listener.accept().await.unwrap();
tokio::spawn(async move {
// Wait for tls handshake to happen
let Ok(stream) = tls_acceptor.accept(cnx).await else {
error!("error during tls handshake connection from {}", addr);
return;
};
let stream = TokioIo::new(stream);
let hyper_service = hyper::service::service_fn(move |request: Request<Incoming>| {
tower_service.clone().call(request)
});
let ret = hyper_util::server::conn::auto::Builder::new(TokioExecutor::new())
.serve_connection_with_upgrades(stream, hyper_service)
.await;
if let Err(err) = ret {
warn!("error serving connection from {}: {}", addr, err);
}
});
}
} Summarytower_service.clone().call(request) Error Notice
let ret = hyper_util::server::conn::auto::Builder::new(TokioExecutor::new())
.serve_connection_with_upgrades(stream, hyper_service)
.await; Error Notice
axum version0.71 |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
Please post your code and fix the formatting. |
Beta Was this translation helpful? Give feedback.
-
We don't need to call |
Beta Was this translation helpful? Give feedback.
We don't need to call
poll_ready
becauseIntoMakeServiceWithConnectInfo
is always ready.