common: add PanicSentinel, improve PrivilegeDropper anyhow context

This commit is contained in:
Joakim Frostegård 2022-04-06 00:41:15 +02:00
parent cb2f7483d3
commit 49523779d9
2 changed files with 18 additions and 1 deletions

View file

@ -30,6 +30,23 @@ impl ValidUntil {
} }
} }
/// Raises SIGTERM when dropped
///
/// Pass to threads to have panics in them cause whole program to exit.
#[derive(Clone)]
pub struct PanicSentinel;
impl Drop for PanicSentinel {
fn drop(&mut self) {
if unsafe { libc::raise(15) } == -1 {
panic!(
"Could not raise SIGTERM: {:#}",
::std::io::Error::last_os_error()
)
}
}
}
/// Extract response peers /// Extract response peers
/// ///
/// If there are more peers in map than `max_num_peers_to_take`, do a /// If there are more peers in map than `max_num_peers_to_take`, do a

View file

@ -55,7 +55,7 @@ impl PrivilegeDropper {
.group(self.config.group.clone()) .group(self.config.group.clone())
.user(self.config.user.clone()) .user(self.config.user.clone())
.apply() .apply()
.with_context(|| "drop privileges")?; .with_context(|| "couldn't drop privileges after socket creation")?;
} }
} }