Merge pull request #890 from lightpanda-io/xhr_cant_block_sync_requests
Some checks failed
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled

Always make sure we have 1 free http state available for synchronous …
This commit is contained in:
Karl Seguin
2025-07-15 10:08:54 +08:00
committed by GitHub

View File

@@ -287,6 +287,12 @@ const AsyncQueue = struct {
fn _check(self: *AsyncQueue, repeat_delay: *?u63) !void {
const client = self.client;
if (client.freeSlotCount() == 1) {
// always leave 1 free connection for sync requests
repeat_delay.* = 10 * std.time.ns_per_ms;
return;
}
const state = client.state_pool.acquireOrNull() orelse {
// re-run this function in 10 milliseconds
repeat_delay.* = 10 * std.time.ns_per_ms;
@@ -3802,7 +3808,7 @@ const TestContext = struct {
errdefer loop.deinit();
var o = opts;
o.max_concurrent = 1;
o.max_concurrent = 2;
const client = try Client.init(testing.allocator, loop, o);
errdefer client.deinit();