aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/https.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/https.rs b/src/https.rs
index 7aa61d5..d621cfe 100644
--- a/src/https.rs
+++ b/src/https.rs
@@ -56,9 +56,16 @@ pub async fn serve_https(
let mut connections = FuturesUnordered::new();
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! {
a = tcp.accept() => a?,
- _ = connections.next() => continue,
+ _ = wait_conn_finished => continue,
_ = must_exit.changed() => continue,
};
@@ -105,9 +112,7 @@ pub async fn serve_https(
drop(tcp);
info!("HTTPS server shutting down, draining remaining connections...");
- while !connections.is_empty() {
- let _ = connections.next().await;
- }
+ while connections.next().await.is_some() {}
Ok(())
}