zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit afebef2465a828132f87cd2aeff0c5873ca10de5 (tree)
parent 06763c4c8c35d2e984ee2315e674a01d5506ded1
Author: Ryo Ota <nwtgck@nwtgck.org>
Date:   Fri, 21 Apr 2023 10:17:16 +0900

create std.http.Server.Response.deinit to handle keepalive connections

Diffstat:
Mlib/std/http/Server.zig | 6++++--
Mlib/std/http/test.zig | 1+
2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/std/http/Server.zig b/lib/std/http/Server.zig @@ -336,6 +336,10 @@ pub const Response = struct { headers: http.Headers, request: Request, + pub fn deinit(res: *Response) void { + res.server.allocator.destroy(res); + } + /// Reset this response to its initial state. This must be called before handling a second request on the same connection. pub fn reset(res: *Response) void { res.request.headers.deinit(); @@ -359,8 +363,6 @@ pub const Response = struct { if (res.request.parser.header_bytes_owned) { res.request.parser.header_bytes.deinit(res.server.allocator); } - - res.server.allocator.destroy(res); } else { res.request.parser.reset(); } diff --git a/lib/std/http/test.zig b/lib/std/http/test.zig @@ -30,6 +30,7 @@ test "client requests server" { const server_thread = try std.Thread.spawn(.{}, (struct { fn apply(s: *std.http.Server) !void { const res = try s.accept(.{ .dynamic = max_header_size }); + defer res.deinit(); defer res.reset(); try res.wait();