Fix busy loop

This commit is contained in:
Alex 2022-01-24 20:06:31 +01:00
parent 10d13b194b
commit 7d5070c57d
No known key found for this signature in database
GPG key ID: EDABF9711E244EB1

View file

@ -56,9 +56,16 @@ pub async fn serve_https(
let mut connections = FuturesUnordered::new(); let mut connections = FuturesUnordered::new();
while !*must_exit.borrow() { while !*must_exit.borrow() {
let wait_conn_finished = async {
if connections.is_empty() {
futures::future::pending().await
} else {
connections.next().await
}
};
let (socket, remote_addr) = select! { let (socket, remote_addr) = select! {
a = tcp.accept() => a?, a = tcp.accept() => a?,
_ = connections.next() => continue, _ = wait_conn_finished => continue,
_ = must_exit.changed() => continue, _ = must_exit.changed() => continue,
}; };
@ -105,9 +112,7 @@ pub async fn serve_https(
drop(tcp); drop(tcp);
info!("HTTPS server shutting down, draining remaining connections..."); info!("HTTPS server shutting down, draining remaining connections...");
while !connections.is_empty() { while connections.next().await.is_some() {}
let _ = connections.next().await;
}
Ok(()) Ok(())
} }