From e5b1acb6e1e28e3571530722d4fb3df84173763d Mon Sep 17 00:00:00 2001 From: sjorsdonkers <72333389+sjorsdonkers@users.noreply.github.com> Date: Mon, 25 Aug 2025 18:07:02 +0200 Subject: [PATCH 1/2] Handle response without body --- src/browser/page.zig | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/browser/page.zig b/src/browser/page.zig index 1f7b6684..09c10078 100644 --- a/src/browser/page.zig +++ b/src/browser/page.zig @@ -695,6 +695,18 @@ pub const Page = struct { self.clearTransferArena(); switch (self.mode) { + .pre => { + // Received a response without a body like: https://httpbin.io/status/200 + // We assume we have received an OK status (checked in Client.headerCallback) + // so we load a blank document to navigate away from any prior page. + self.mode = .{ .parsed = {} }; + + var fbs = std.io.fixedBufferStream(""); + const html_doc = try parser.documentHTMLParse(fbs.reader(), "utf-8"); + try self.setDocument(html_doc); + + self.documentIsComplete(); + }, .raw => |buf| { self.mode = .{ .raw_done = buf.items }; self.documentIsComplete(); From e2d47e1c8690a7fce77d6ba14e6990766953161a Mon Sep 17 00:00:00 2001 From: sjorsdonkers <72333389+sjorsdonkers@users.noreply.github.com> Date: Tue, 26 Aug 2025 10:12:07 +0200 Subject: [PATCH 2/2] fix merge conflict --- src/browser/page.zig | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/browser/page.zig b/src/browser/page.zig index 09c10078..19459e05 100644 --- a/src/browser/page.zig +++ b/src/browser/page.zig @@ -701,8 +701,7 @@ pub const Page = struct { // so we load a blank document to navigate away from any prior page. self.mode = .{ .parsed = {} }; - var fbs = std.io.fixedBufferStream(""); - const html_doc = try parser.documentHTMLParse(fbs.reader(), "utf-8"); + const html_doc = try parser.documentHTMLParseFromStr(""); try self.setDocument(html_doc); self.documentIsComplete(); @@ -768,10 +767,6 @@ pub const Page = struct { self.documentIsComplete(); } }, - .pre => { - // we didn't get any data. - self.documentIsComplete(); - }, else => { log.err(.app, "unreachable mode", .{ .mode = self.mode }); unreachable;