Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions http/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -670,22 +670,27 @@ 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
/// server is `wait()`ing.
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();
}
}