diff options
| author | Robby Zambito <contact@robbyzambito.me> | 2026-01-02 23:11:03 +0000 |
|---|---|---|
| committer | Robby Zambito <contact@robbyzambito.me> | 2026-01-02 23:13:54 +0000 |
| commit | 0f851a140d35b6747ec8b5ece92b6eb6afe94a50 (patch) | |
| tree | 9f7838f37d463d755b856b3d213672c4a77c413f /src/server/message_parser.zig | |
| parent | 67908cf19875dd42f17d4ae6768fe7cf54a05e6c (diff) | |
Fix possible race condition
since the queue was being set in an async task and we were then calling send asserting that the queue was set, we could have triggered a panic.
didn't run into it but seemed likely to cause issues in the future.
also compute the buffer size for operators at comptime.
Diffstat (limited to 'src/server/message_parser.zig')
| -rw-r--r-- | src/server/message_parser.zig | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/message_parser.zig b/src/server/message_parser.zig index 1b7333a..52d1422 100644 --- a/src/server/message_parser.zig +++ b/src/server/message_parser.zig @@ -250,7 +250,13 @@ pub const Message = union(MessageType) { /// An error should be handled by cleaning up this connection. pub fn next(alloc: std.mem.Allocator, in: *std.Io.Reader) !Message { var operation_string: std.ArrayList(u8) = blk: { - var buf: ["CONTINUE".len + 1]u8 = undefined; + comptime var buf_len = 0; + comptime { + for (client_types.keys()) |key| { + buf_len = @max(buf_len, key.len); + } + } + var buf: [buf_len]u8 = undefined; break :blk .initBuffer(&buf); }; |
