diff options
Diffstat (limited to 'src/https.rs')
-rw-r--r-- | src/https.rs | 13 |
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(()) } |