summaryrefslogtreecommitdiff
path: root/src/server/message_parser.zig
diff options
context:
space:
mode:
authorRobby Zambito <contact@robbyzambito.me>2026-01-02 23:11:03 +0000
committerRobby Zambito <contact@robbyzambito.me>2026-01-02 23:13:54 +0000
commit0f851a140d35b6747ec8b5ece92b6eb6afe94a50 (patch)
tree9f7838f37d463d755b856b3d213672c4a77c413f /src/server/message_parser.zig
parent67908cf19875dd42f17d4ae6768fe7cf54a05e6c (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.zig8
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);
};