From 7aa0360788138de35c509e4e6647a9401340806a Mon Sep 17 00:00:00 2001 From: Muki Kiboigo Date: Mon, 30 Mar 2026 11:33:19 -0700 Subject: [PATCH] always close file on serveFromCache --- ...6c6f2dcc1e6022693e854809c72179a7a486b7.cache | Bin 0 -> 10197 bytes src/browser/HttpClient.zig | 9 ++++----- 2 files changed, 4 insertions(+), 5 deletions(-) create mode 100644 lp-net-cache/6ba046812fd9e6b6c7e484ec946c6f2dcc1e6022693e854809c72179a7a486b7.cache diff --git a/lp-net-cache/6ba046812fd9e6b6c7e484ec946c6f2dcc1e6022693e854809c72179a7a486b7.cache b/lp-net-cache/6ba046812fd9e6b6c7e484ec946c6f2dcc1e6022693e854809c72179a7a486b7.cache new file mode 100644 index 0000000000000000000000000000000000000000..a944dbb8e2443049422f18307899943f92913c61 GIT binary patch literal 10197 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 T#F*l}CCy4)_`G{_d2{n$>p;9@ literal 0 HcmV?d00001 diff --git a/src/browser/HttpClient.zig b/src/browser/HttpClient.zig index ea518f07..e4c7a8f2 100644 --- a/src/browser/HttpClient.zig +++ b/src/browser/HttpClient.zig @@ -316,6 +316,10 @@ pub fn request(self: *Client, req: Request) !void { fn serveFromCache(req: Request, cached: *const CachedResponse) !void { const response = Response.fromCached(req.ctx, cached); + defer switch (cached.data) { + .buffer => |_| {}, + .file => |f| f.file.close(), + }; if (req.start_callback) |cb| { try cb(response); @@ -323,10 +327,6 @@ fn serveFromCache(req: Request, cached: *const CachedResponse) !void { const proceed = try req.header_callback(response); if (!proceed) { - switch (cached.data) { - .buffer => |_| {}, - .file => |f| f.file.close(), - } req.error_callback(req.ctx, error.Abort); return; } @@ -339,7 +339,6 @@ fn serveFromCache(req: Request, cached: *const CachedResponse) !void { }, .file => |f| { const file = f.file; - defer file.close(); var buf: [1024]u8 = undefined; var file_reader = file.reader(&buf);