From 7d5070c57dabfb22c5bd17a850adcbbfa19d730a Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Mon, 24 Jan 2022 20:06:31 +0100 Subject: [PATCH] Fix busy loop --- src/https.rs | 13 +++++++++---- 1 file 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(()) }