diff --git a/src/TestHTTPServer.zig b/src/TestHTTPServer.zig index a6d157c2..2fed8d63 100644 --- a/src/TestHTTPServer.zig +++ b/src/TestHTTPServer.zig @@ -90,8 +90,13 @@ fn handleConnection(self: *TestHTTPServer, conn: std.net.Server.Connection) !voi }; self.handler(&req) catch |err| { - std.debug.print("test http error '{s}': {}\n", .{ req.head.target, err }); - try req.respond("server error", .{ .status = .internal_server_error }); + switch (err) { + error.BrokenPipe => {}, + else => { + std.debug.print("test http error '{s}': {}\n", .{ req.head.target, err }); + try req.respond("server error", .{ .status = .internal_server_error }); + }, + } return; }; } diff --git a/src/browser/Frame.zig b/src/browser/Frame.zig index 6561f2cd..f875d2e6 100644 --- a/src/browser/Frame.zig +++ b/src/browser/Frame.zig @@ -4300,5 +4300,16 @@ test "Frame: httpMetadata 404" { defer testing.test_session.removePage(); const meta = frame.httpMetadata(); try testing.expect(meta.status != null); - try std.testing.expectEqual(@as(u16, 404), meta.status.?); + try testing.expectEqual(404, meta.status.?); +} + +test "Frame: 401" { + var frame = try testing.pageTest("401", .{}); + defer testing.reset(); + defer frame._session.removePage(); + + var buf = std.Io.Writer.Allocating.init(testing.allocator); + defer buf.deinit(); + try @import("dump.zig").root(frame.document, .{}, &buf.writer, frame); + try testing.expectEqual("
No
", buf.written()); } diff --git a/src/browser/HttpClient.zig b/src/browser/HttpClient.zig index ad5cd412..a45b6b6c 100644 --- a/src/browser/HttpClient.zig +++ b/src/browser/HttpClient.zig @@ -1871,7 +1871,7 @@ pub const Transfer = struct { log.err(.http, "getResponseCode", .{ .err = err, .source = "body callback" }); return http.writefunc_error; }; - if ((status >= 300 and status <= 399) or status == 401 or status == 407) { + if (status >= 300 and status <= 399) { res.skip_body = true; return @intCast(chunk_len); } diff --git a/src/testing.zig b/src/testing.zig index 62b1c67d..3b4f4dce 100644 --- a/src/testing.zig +++ b/src/testing.zig @@ -653,6 +653,15 @@ fn testHTTPHandler(req: *std.http.Server.Request) !void { }); } + if (std.mem.eql(u8, path, "/src/browser/tests/401")) { + return req.respond("No", .{ + .status = .unauthorized, + .extra_headers = &.{ + .{ .name = "Content-Type", .value = "text/plain" }, + }, + }); + } + if (std.mem.eql(u8, path, "/404.js")) { // Valid JS body served with a 404 status. Used to assert that // ScriptManager does NOT execute the body of a failed script