Skip to content

Commit

Permalink
unix: Restore old handler when returning MultipleHandlers
Browse files Browse the repository at this point in the history
  • Loading branch information
ilya-bobyr authored and Detegr committed May 23, 2023
1 parent 2132c8d commit 948847a
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/platform/unix/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ pub unsafe fn init_os_handler() -> Result<(), Error> {
Err(e) => return Err(close_pipe(e)),
};
if sigint_old.handler() != signal::SigHandler::SigDfl {
signal::sigaction(signal::Signal::SIGINT, &sigint_old).unwrap();
return Err(close_pipe(nix::Error::EEXIST));
}

Expand All @@ -128,6 +129,7 @@ pub unsafe fn init_os_handler() -> Result<(), Error> {
};
if sigterm_old.handler() != signal::SigHandler::SigDfl {
signal::sigaction(signal::Signal::SIGINT, &sigint_old).unwrap();
signal::sigaction(signal::Signal::SIGTERM, &sigterm_old).unwrap();
return Err(close_pipe(nix::Error::EEXIST));
}
let sighup_old = match signal::sigaction(signal::Signal::SIGHUP, &new_action) {
Expand All @@ -141,6 +143,7 @@ pub unsafe fn init_os_handler() -> Result<(), Error> {
if sighup_old.handler() != signal::SigHandler::SigDfl {
signal::sigaction(signal::Signal::SIGINT, &sigint_old).unwrap();
signal::sigaction(signal::Signal::SIGTERM, &sigterm_old).unwrap();
signal::sigaction(signal::Signal::SIGHUP, &sighup_old).unwrap();
return Err(close_pipe(nix::Error::EEXIST));
}
}
Expand Down

0 comments on commit 948847a

Please sign in to comment.