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
///
/// 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())
.user(self.config.user.clone())
.apply()
.with_context(|| "drop privileges")?;
.with_context(|| "couldn't drop privileges after socket creation")?;
}
}