diff --git a/lib/std/http/Server.zig b/lib/std/http/Server.zig index 4bb11eada6..a9803ce47f 100644 --- a/lib/std/http/Server.zig +++ b/lib/std/http/Server.zig @@ -458,6 +458,10 @@ pub const Response = struct { try w.print("{}", .{res.headers}); } + if (res.request.method == .HEAD) { + res.transfer_encoding = .none; + } + try w.writeAll("\r\n"); try buffered.flush(); @@ -520,10 +524,6 @@ pub const Response = struct { res.request.parser.done = true; } - if (res.request.method == .HEAD) { - res.request.parser.done = true; - } - if (!res.request.parser.done) { if (res.request.transfer_compression) |tc| switch (tc) { .compress => return error.CompressionNotSupported, diff --git a/test/standalone/http.zig b/test/standalone/http.zig index 5a59544a14..6a503c9338 100644 --- a/test/standalone/http.zig +++ b/test/standalone/http.zig @@ -55,6 +55,8 @@ fn handleRequest(res: *Server.Response) !void { try res.writeAll("Hello, "); try res.writeAll("World!\n"); try res.finish(); + } else { + try testing.expectEqual(res.writeAll("errors"), error.NotWriteable); } } else if (mem.startsWith(u8, res.request.target, "/large")) { res.transfer_encoding = .{ .content_length = 14 * 1024 + 14 * 10 };