From 837188f8d1853c76fe2f187f5c8ffa2549adde3a Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Wed, 23 Apr 2025 08:28:20 +0800 Subject: [PATCH] peek must check existing data first --- src/http/client.zig | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/http/client.zig b/src/http/client.zig index 028c88a4..18e70f1c 100644 --- a/src/http/client.zig +++ b/src/http/client.zig @@ -1576,6 +1576,19 @@ pub const Response = struct { } pub fn peek(self: *Response) ![]u8 { + if (try self.processData()) |data| { + // We already have some or all of the body. This happens because + // we always read as much as we can, so getting the header and + // part/all of the body is normal. + if (data.len > 100) { + self._peek_buf = data; + self._peek_len = data.len; + return data; + } + @memcpy(self._peek_buf[0..data.len], data); + self._peek_len = data.len; + } + while (true) { var peek_buf = self._peek_buf; const peek_len = self._peek_len;