From de4f91af015f3cc86e1339d5aea21aa06f13745f Mon Sep 17 00:00:00 2001 From: Muki Kiboigo Date: Fri, 3 Apr 2026 13:31:10 -0700 Subject: [PATCH] fix WebBotAuthLayer crash --- src/browser/HttpClient.zig | 4 +--- src/network/layer/WebBotAuthLayer.zig | 23 +++++++++-------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/browser/HttpClient.zig b/src/browser/HttpClient.zig index 357c4ae9..752223f4 100644 --- a/src/browser/HttpClient.zig +++ b/src/browser/HttpClient.zig @@ -659,9 +659,7 @@ pub fn init(allocator: Allocator, network: *Network) !*Client { .allocator = allocator, .pending = .empty, }, - WebBotAuthLayer{ - .auth = if (network.web_bot_auth) |*wba| wba else null, - }, + WebBotAuthLayer{}, CacheLayer{}, }); errdefer layers.deinit(allocator); diff --git a/src/network/layer/WebBotAuthLayer.zig b/src/network/layer/WebBotAuthLayer.zig index 5b23656e..c53ce1c1 100644 --- a/src/network/layer/WebBotAuthLayer.zig +++ b/src/network/layer/WebBotAuthLayer.zig @@ -28,7 +28,6 @@ const Layer = @import("../../browser/HttpClient.zig").Layer; const WebBotAuthLayer = @This(); next: Layer = undefined, -auth: ?*WebBotAuth, pub fn layer(self: *WebBotAuthLayer) Layer { return .{ @@ -37,23 +36,19 @@ pub fn layer(self: *WebBotAuthLayer) Layer { }; } -pub fn deinit(self: *WebBotAuthLayer, allocator: std.mem.Allocator) void { - if (self.auth) |wba| wba.deinit(allocator); -} +pub fn deinit(_: *WebBotAuthLayer, _: std.mem.Allocator) void {} fn request(ptr: *anyopaque, ctx: Context, req: Request) anyerror!void { const self: *WebBotAuthLayer = @ptrCast(@alignCast(ptr)); - - if (self.auth == null) { - return self.next.request(ctx, req); - } - - const arena = try ctx.network.app.arena_pool.acquire(.{ .debug = "WebBotAuthLayer" }); - defer ctx.network.app.arena_pool.release(arena); - var our_req = req; - const authority = URL.getHost(req.url); - try self.auth.?.signRequest(arena, &our_req.headers, authority); + + if (ctx.network.web_bot_auth) |*wba| { + const arena = try ctx.network.app.arena_pool.acquire(.{ .debug = "WebBotAuthLayer" }); + defer ctx.network.app.arena_pool.release(arena); + + const authority = URL.getHost(req.url); + try wba.signRequest(arena, &our_req.headers, authority); + } return self.next.request(ctx, our_req); }