diff options
| author | Robby Zambito <contact@robbyzambito.me> | 2026-01-01 21:41:53 +0000 |
|---|---|---|
| committer | Robby Zambito <contact@robbyzambito.me> | 2026-01-01 22:14:36 +0000 |
| commit | a3e026ebf1434279bae431aa463a2690b471a4c2 (patch) | |
| tree | 427ff2ac3a12d01314652f03b53861aa3ccf1c31 /src/server/client.zig | |
| parent | fc68749669a3bd9e0530d5958b100262537f142a (diff) | |
Cleanup for deinitializing
Diffstat (limited to 'src/server/client.zig')
| -rw-r--r-- | src/server/client.zig | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/server/client.zig b/src/server/client.zig index 5c8d0cd..ff7e5c1 100644 --- a/src/server/client.zig +++ b/src/server/client.zig @@ -29,7 +29,20 @@ pub fn start(self: *Client, io: std.Io, alloc: std.mem.Allocator, queue: *std.Io while (true) { const len = try queue.get(io, &msgs, 1); std.debug.assert(len <= msgs.len); - for (msgs[0..len]) |msg| { + for (0..len) |i| { + const msg = msgs[i]; + defer switch (msg) { + .msg => |m| m.deinit(alloc), + else => {}, + }; + errdefer { + for (msgs[i + 1 .. len]) |mg| switch (mg) { + .msg => |m| { + m.deinit(alloc); + }, + else => {}, + }; + } switch (msg) { .@"+ok" => { _ = try self.to_client.write("+OK\r\n"); @@ -43,7 +56,6 @@ pub fn start(self: *Client, io: std.Io, alloc: std.mem.Allocator, queue: *std.Io _ = try self.to_client.write("\r\n"); }, .msg => |m| { - defer m.deinit(alloc); try self.to_client.print( "MSG {s} {s} {s} {d}\r\n{s}\r\n", .{ |
