From 85eda793c5fe366ddbff98fb7c4885677056df75 Mon Sep 17 00:00:00 2001 From: Erik Mackdanz Date: Tue, 24 Oct 2023 08:23:40 -0500 Subject: [PATCH] Add Ctrl+C support --- Cargo.lock | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/main.rs | 9 +++++++++ 3 files changed, 61 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 362d415..de1ecd6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,27 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "fastcgi" version = "1.0.0" @@ -16,6 +37,7 @@ name = "fcgisrv" version = "0.1.0" dependencies = [ "fastcgi", + "signal", ] [[package]] @@ -23,3 +45,32 @@ name = "libc" version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" + +[[package]] +name = "nix" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" +dependencies = [ + "bitflags", + "cc", + "cfg-if", + "libc", + "void", +] + +[[package]] +name = "signal" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f6ce83b159ab6984d2419f495134972b48754d13ff2e3f8c998339942b56ed9" +dependencies = [ + "libc", + "nix", +] + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" diff --git a/Cargo.toml b/Cargo.toml index 4aed1ca..0021501 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,3 +7,4 @@ edition = "2021" [dependencies] fastcgi = "1.0.0" +signal = "0.7.0" diff --git a/src/main.rs b/src/main.rs index 6412b90..1e21677 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,10 +4,16 @@ use std::fs::remove_file; use std::io::Write; use std::os::unix::net::UnixListener; use std::os::fd::AsRawFd; +use signal::exec_handler::{set_command_line,set_handler}; +use signal::Signal; fn main() -> Result<(),Box> { + let socketpath = "/tmp/fcgisocket"; + set_command_line("/bin/rm",["-f",socketpath],[("FOO","")]); + let _ = set_handler(&[Signal::SIGINT],false); + let _ = remove_file(socketpath); let listener = UnixListener::bind(socketpath).unwrap(); @@ -21,5 +27,8 @@ fn main() -> Result<(),Box> { } }, listener.as_raw_fd()); + + let _ = remove_file(socketpath); + Ok(()) } -- 2.52.0