proxmox-rest-server: avoid useless call to request_shutdown

Also avoid unsafe code.
This commit is contained in:
Dietmar Maurer 2021-09-29 12:46:00 +02:00
parent 450105b0c3
commit a0ffd4a413
2 changed files with 8 additions and 6 deletions

View File

@ -274,7 +274,9 @@ where
let finish_future = match future::select(server_future, shutdown_future).await {
Either::Left((_, _)) => {
crate::request_shutdown(); // make sure we are in shutdown mode
if !crate::shutdown_requested() {
crate::request_shutdown(); // make sure we are in shutdown mode
}
None
}
Either::Right((_, server_future)) => Some(server_future),

View File

@ -1,4 +1,5 @@
use std::os::unix::io::RawFd;
use std::sync::atomic::{Ordering, AtomicBool};
use anyhow::{bail, format_err, Error};
use nix::unistd::Pid;
@ -92,18 +93,17 @@ pub fn our_ctrl_sock() -> String {
ctrl_sock_from_pid(*PID)
}
static mut SHUTDOWN_REQUESTED: bool = false;
static SHUTDOWN_REQUESTED: AtomicBool = AtomicBool::new(false);
pub fn request_shutdown() {
unsafe {
SHUTDOWN_REQUESTED = true;
}
println!("request_shutdown");
SHUTDOWN_REQUESTED.store(true, Ordering::SeqCst);
crate::server_shutdown();
}
#[inline(always)]
pub fn shutdown_requested() -> bool {
unsafe { SHUTDOWN_REQUESTED }
SHUTDOWN_REQUESTED.load(Ordering::SeqCst)
}
pub fn fail_on_shutdown() -> Result<(), Error> {