From a35e772a6b68948711aa91a398387eca85901282 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Sat, 7 Feb 2026 08:34:59 +0800 Subject: [PATCH] Move Sighandler to "serve" mode only Currently the sighandler is setup regardless of the running mode, but it only does something in "serve" mode. In fetch mode, since there are no registered listeners, it intercepts the signal and does nothing. On MacOS at least, this isn't a great experience as it can leave the process running in the background. --- src/main.zig | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main.zig b/src/main.zig index 76c23d74..106ed757 100644 --- a/src/main.zig +++ b/src/main.zig @@ -43,16 +43,13 @@ pub fn main() !void { const main_arena = main_arena_instance.allocator(); defer main_arena_instance.deinit(); - var sighandler = SigHandler{ .arena = main_arena }; - try sighandler.install(); - - run(gpa, main_arena, &sighandler) catch |err| { + run(gpa, main_arena) catch |err| { log.fatal(.app, "exit", .{ .err = err }); std.posix.exit(1); }; } -fn run(allocator: Allocator, main_arena: Allocator, sighandler: *SigHandler) !void { +fn run(allocator: Allocator, main_arena: Allocator) !void { const args = try Config.parseArgs(main_arena); defer args.deinit(main_arena); @@ -86,6 +83,9 @@ fn run(allocator: Allocator, main_arena: Allocator, sighandler: *SigHandler) !vo switch (args.mode) { .serve => |opts| { + var sighandler = SigHandler{ .arena = main_arena }; + try sighandler.install(); + log.debug(.app, "startup", .{ .mode = "serve", .snapshot = app.snapshot.fromEmbedded() }); const address = std.net.Address.parseIp(opts.host, opts.port) catch |err| { log.fatal(.app, "invalid server address", .{ .err = err, .host = opts.host, .port = opts.port });