From d546508f648272e1aba69db818025c482b83220b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Thu, 20 Feb 2020 13:46:10 +0100 Subject: [PATCH] Wait for http server to close on Drop. --- http/src/lib.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/http/src/lib.rs b/http/src/lib.rs index 0a58276f9..7cc40bedf 100644 --- a/http/src/lib.rs +++ b/http/src/lib.rs @@ -670,11 +670,7 @@ impl Server { /// Will block, waiting for the server to finish. pub fn wait(mut self) { - if let Some(receivers) = self.done.take() { - for receiver in receivers { - let _ = receiver.wait(); - } - } + self.wait_internal(); } /// Get a handle that allows us to close the server from a different thread and/or while the @@ -682,10 +678,19 @@ impl Server { pub fn close_handle(&self) -> CloseHandle { CloseHandle(self.executors.clone()) } + + fn wait_internal(&mut self) { + if let Some(receivers) = self.done.take() { + for receiver in receivers { + let _ = receiver.wait(); + } + } + } } impl Drop for Server { fn drop(&mut self) { self.close_handle().close(); + self.wait_internal(); } }