diff --git a/src/http/Client.zig b/src/http/Client.zig index f2a26dfc..91efd30b 100644 --- a/src/http/Client.zig +++ b/src/http/Client.zig @@ -185,12 +185,14 @@ pub fn tick(self: *Client, timeout_ms: usize) !void { pub fn request(self: *Client, req: Request) !void { if (self.handles.getFreeHandle()) |handle| { + self.active += 1; return self.makeRequest(handle, req); } const node = try self.queue_node_pool.create(); node.data = req; self.queue.append(node); + self.active += 1; } // See ScriptManager.blockingGet @@ -234,13 +236,18 @@ fn makeRequest(self: *Client, handle: *Handle, req: Request) !void { // we need this for cookies const uri = std.Uri.parse(req.url) catch |err| { + self.active -= 1; self.handles.release(handle); log.warn(.http, "invalid url", .{ .err = err, .url = req.url }); return; }; const header_list = blk: { - errdefer self.handles.release(handle); + errdefer { + self.active -= 1; + self.handles.release(handle); + } + try conn.setMethod(req.method); try conn.setURL(req.url); @@ -275,7 +282,10 @@ fn makeRequest(self: *Client, handle: *Handle, req: Request) !void { }; { - errdefer self.handles.release(handle); + errdefer { + self.active -= 1; + self.handles.release(handle); + } const transfer = try self.transfer_pool.create(); transfer.* = .{ @@ -299,7 +309,6 @@ fn makeRequest(self: *Client, handle: *Handle, req: Request) !void { } } - self.active += 1; return self.perform(0); } diff --git a/vendor/netsurf/libdom b/vendor/netsurf/libdom index 0c590b26..c0df4581 160000 --- a/vendor/netsurf/libdom +++ b/vendor/netsurf/libdom @@ -1 +1 @@ -Subproject commit 0c590b265a65b937042d68ad34902c9b4a05839a +Subproject commit c0df458132162aba136d57ce1ba2179122a9e717