From b3d350d41e0dc2885bd3fd76f1543151d22bc05d Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Thu, 4 Sep 2025 15:27:03 +0800 Subject: [PATCH 1/3] Limit serve timeout to 1 week --- src/main.zig | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main.zig b/src/main.zig index 3aac6907..11677765 100644 --- a/src/main.zig +++ b/src/main.zig @@ -137,7 +137,9 @@ fn run(alloc: Allocator) !void { const server = &_server.?; defer server.deinit(); - server.run(address, opts.timeout * 1000) catch |err| { + // max timeout of 1 week. + const timeout = if (opts.timeout > 604_800) 604_800_000 else @as(i32, @intCast(opts.timeout)) * 1000; + server.run(address, timeout) catch |err| { log.fatal(.app, "server run error", .{ .err = err }); return err; }; @@ -268,7 +270,7 @@ const Command = struct { const Serve = struct { host: []const u8, port: u16, - timeout: u16, + timeout: u31, common: Common, }; @@ -465,7 +467,7 @@ fn parseServeArgs( ) !Command.Serve { var host: []const u8 = "127.0.0.1"; var port: u16 = 9222; - var timeout: u16 = 10; + var timeout: u31 = 10; var common: Command.Common = .{}; while (args.next()) |opt| { @@ -497,7 +499,7 @@ fn parseServeArgs( return error.InvalidArgument; }; - timeout = std.fmt.parseInt(u16, str, 10) catch |err| { + timeout = std.fmt.parseInt(u31, str, 10) catch |err| { log.fatal(.app, "invalid argument value", .{ .arg = "--timeout", .err = err }); return error.InvalidArgument; }; From 6e5fe8e4a2fa4c254181ff6ecd697fbb1c8ee020 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Thu, 4 Sep 2025 15:48:01 +0800 Subject: [PATCH 2/3] Add timeout limit to --help text --- src/main.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.zig b/src/main.zig index 11677765..47255e61 100644 --- a/src/main.zig +++ b/src/main.zig @@ -371,7 +371,7 @@ const Command = struct { \\ Defaults to 9222 \\ \\--timeout Inactivity timeout in seconds before disconnecting clients - \\ Defaults to 10 (seconds) + \\ Defaults to 10 (seconds). Limited to 604800 (1 week). \\ ++ common_options ++ \\ From da128f5d49ed7c9aac753c5efa9356f156bee1bc Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Thu, 4 Sep 2025 15:52:08 +0800 Subject: [PATCH 3/3] remove unecessary @intCast --- src/main.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.zig b/src/main.zig index 47255e61..7485e8fa 100644 --- a/src/main.zig +++ b/src/main.zig @@ -138,7 +138,7 @@ fn run(alloc: Allocator) !void { defer server.deinit(); // max timeout of 1 week. - const timeout = if (opts.timeout > 604_800) 604_800_000 else @as(i32, @intCast(opts.timeout)) * 1000; + const timeout = if (opts.timeout > 604_800) 604_800_000 else @as(i32, opts.timeout) * 1000; server.run(address, timeout) catch |err| { log.fatal(.app, "server run error", .{ .err = err }); return err;