]> Humopery - fcgisrv.git/commitdiff
Add Ctrl+C support
authorErik Mackdanz <erikmack@gmail.com>
Tue, 24 Oct 2023 13:23:40 +0000 (08:23 -0500)
committerErik Mackdanz <erikmack@gmail.com>
Tue, 24 Oct 2023 13:23:40 +0000 (08:23 -0500)
Cargo.lock
Cargo.toml
src/main.rs

index 362d41525defb3470d2a77a3f6afb3516bd992cf..de1ecd6f9b2ab70d2addd4c8be0f60ed9d09cdae 100644 (file)
@@ -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"
index 4aed1ca916390f6b701849676c6fca6cdd7d4bf3..00215010c5ab5cdaa9f1c6719e81d9e1b623f4dd 100644 (file)
@@ -7,3 +7,4 @@ edition = "2021"
 
 [dependencies]
 fastcgi = "1.0.0"
+signal = "0.7.0"
index 6412b903cba6eff9130d1d28c5f335d596c53a78..1e21677fa6668890d1078a9c1b60215806e27aad 100644 (file)
@@ -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<dyn Error>> {
+
     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<dyn Error>> {
        }
 
     }, listener.as_raw_fd());
+
+    let _ = remove_file(socketpath);
+
     Ok(())
 }