diff --git a/cli/src/net/ws.zig b/cli/src/net/ws.zig index e2f4bfd..45e6aab 100644 --- a/cli/src/net/ws.zig +++ b/cli/src/net/ws.zig @@ -138,9 +138,22 @@ pub const Client = struct { _ = try stream.write(request); - // Read response - var response_buf: [1024]u8 = undefined; - const bytes_read = try stream.read(&response_buf); + // Read response until complete + var response_buf: [4096]u8 = undefined; + var bytes_read: usize = 0; + var header_complete = false; + + while (!header_complete and bytes_read < response_buf.len - 1) { + const chunk_bytes = try stream.read(response_buf[bytes_read..]); + if (chunk_bytes == 0) break; + bytes_read += chunk_bytes; + + // Check if we have complete HTTP headers (\r\n\r\n) + if (std.mem.indexOf(u8, response_buf[0..bytes_read], "\r\n\r\n") != null) { + header_complete = true; + } + } + const response = response_buf[0..bytes_read]; // Check for successful handshake