Commit Graph
32 Commits
Author SHA1 Message Date
barrypandClaude Fable 5.1 6385be0890 Handle SIGTERM/SIGINT for a graceful shutdown
Running as PID 1 in a container, the daemon silently dropped SIGTERM,
so `docker stop` always hit the 10s timeout and SIGKILL, and host
reboots waited on it.

The accept loop now polls a non-blocking listener and a shutdown flag
registered via signal-hook. On SIGTERM or SIGINT it stops accepting,
gives in-flight requests up to 3s to finish, removes the socket file,
and exits with status 0. Log lines mark signal receipt and completion.

Adds integration tests that spawn the binary, perform an auth
round-trip, signal it, and assert a clean exit and socket removal.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kmrgkpp9YBJ6AMaWYPPZuD
2026-09-12 13:05:20 -07:00
Barry Pederson 1de0fa16db Add some logging so that with the env variable RUST_LOG=debug or similar, there is timestamped output to stderr 2026-02-03 15:57:11 -08:00
Barry Pederson 83d437c9ce Update rust and alpine versions in Dockerfile 2026-02-03 13:15:06 -08:00
Barry Pederson 8e2f622811 Updated rust libraries 2026-02-03 12:59:43 -08:00
Barry Pederson a03b738c7a Add argon2 password hashing 2026-02-03 12:59:01 -08:00
Barry Pederson 120db0bd90 Updated rust libraries 2026-01-02 12:07:01 -08:00
Barry Pederson c0333deb9c Update Docker rust build image from 1.85.0 to 1.88.0, and runtime alpine from 3.21.3 to 3.22.0 2025-07-01 20:43:09 -07:00
Barry Pederson d9da12a6de Improvements from clippy 2025-07-01 20:37:00 -07:00
Barry Pederson 3fac9def78 I think I've got the workspace thing figured out..how the Cargo.toml files should reference each other 2025-02-21 15:11:31 -08:00
Barry Pederson e5f2bbf64e clap and common need to be dependencies under the server directory, despite what rustrover says 2025-02-21 14:32:35 -08:00
Barry Pederson 87c81944a5 Updated Dockerfile to build with rust 1.85.0 (to get 2024 edition), and run with alpine 3.21.3 (newest version) 2025-02-21 14:27:28 -08:00
Barry Pederson 93ad2cc8a7 Updated to Rust 2024 edition 2025-02-21 14:24:57 -08:00
Barry Pederson 9228a861af Ran 'cargo update' 2025-02-21 14:20:21 -08:00
Barry Pederson da84d2d6b9 rename 'handler' to 'repository' for clarity 2024-11-30 12:44:34 -08:00
Barry Pederson a792d26678 Add Dockerfile 2024-11-03 20:09:41 -08:00
Barry Pederson 60bc980e8d Simplify test code a bit, use Request::new() to simplfy constructing requests 2024-11-03 12:49:23 -08:00
Barry Pederson 4d70463e46 Make handler.rs generic for anything that implements Read+Write, add unittest taking advantage of that.
Also, it'll work now for things other than UnixStreams, such as TcpStreams
2024-11-03 12:19:02 -08:00
Barry Pederson 5f4a0e0e88 Reorganize and refactor, adding integration test for common library stuff 2024-11-03 11:44:03 -08:00
Barry Pederson 00743fbe9c Reame listener.rs to server.rs for clarity 2024-11-03 10:38:40 -08:00
Barry Pederson 7cd2ba3364 Rename server.rs to handler.rs for clarity, since this is responsible for handling one interaction with a client 2024-11-03 10:31:31 -08:00
Barry Pederson 1a66c8ede5 Rename handler.rs to repository.rs for clarity, pass the directory name as a new() parameter rather than have the repository aware of the OPTIONS static 2024-11-03 10:28:14 -08:00
Barry Pederson 52f502f7a6 Simplify Cargo.toml dependencies
Still need two copies of the dependencies, but at least they're in one place now.
2024-11-02 16:07:05 -07:00
Barry Pederson 076e48f457 Add a separate client binary, with some common code to the server.
The cargo workspace thing was a PITA to figure out, but it seems to be working.  Could maybe be simplified?
2024-11-02 15:58:35 -07:00
Barry Pederson 46ad77f19e Restructure and add unit tests...maybe it works now? 2024-11-02 13:49:07 -07:00
Barry Pederson ac9743dc8a WIP: trying to refactor to separate password-checking from network-communication 2024-11-02 11:05:16 -07:00
Barry Pederson 15daa7d7a1 Make option names closer to option variable names 2022-03-01 10:24:48 -08:00
Barry Pederson 8134df29b7 Change option names for clarity 2022-03-01 10:23:17 -08:00
Barry Pederson b9c091f71f Use once_cell to allow for global static immutable options
So they don't have to be passed around all over the place
2022-03-01 10:03:38 -08:00
Barry Pederson a244e714ea Refactor Listener and Server into separate files. 2022-03-01 09:07:29 -08:00
Barry Pederson bb65edd766 Add structopt option parsing, use a plain textfile for each user rather than YAML 2022-02-28 19:14:54 -08:00
Barry Pederson 3b01c2a893 Got it actually checking against a yaml file 2022-02-28 14:22:16 -08:00
Barry Pederson 36f26d4a85 First pass, creates socket, should listen and respond 2022-02-28 11:58:57 -08:00