Merge pull request #1132 from lightpanda-io/reduce_http_tick_blocking

Remove potential processing blocking with CDP
This commit is contained in:
Karl Seguin
2025-10-09 14:14:05 +08:00
committed by GitHub
2 changed files with 9 additions and 4 deletions

View File

@@ -106,7 +106,7 @@ pub fn LogInterceptor(comptime BC: type) type {
}, .{ }, .{
.session_id = self.bc.session_id, .session_id = self.bc.session_id,
}) catch |err| { }) catch |err| {
log.err(.interceptor, "failed to send", .{.err = err}); log.err(.interceptor, "failed to send", .{ .err = err });
}; };
} }
}; };

View File

@@ -393,7 +393,9 @@ fn perform(self: *Client, timeout_ms: c_int) !PerformStatus {
// We're potentially going to block for a while until we get data. Process // We're potentially going to block for a while until we get data. Process
// whatever messages we have waiting ahead of time. // whatever messages we have waiting ahead of time.
try self.processMessages(); if (try self.processMessages()) {
return .normal;
}
var status = PerformStatus.normal; var status = PerformStatus.normal;
if (self.extra_socket) |s| { if (self.extra_socket) |s| {
@@ -411,12 +413,13 @@ fn perform(self: *Client, timeout_ms: c_int) !PerformStatus {
try errorMCheck(c.curl_multi_poll(multi, null, 0, timeout_ms, null)); try errorMCheck(c.curl_multi_poll(multi, null, 0, timeout_ms, null));
} }
try self.processMessages(); _ = try self.processMessages();
return status; return status;
} }
fn processMessages(self: *Client) !void { fn processMessages(self: *Client) !bool {
const multi = self.multi; const multi = self.multi;
var processed = false;
var messages_count: c_int = 0; var messages_count: c_int = 0;
while (c.curl_multi_info_read(multi, &messages_count)) |msg_| { while (c.curl_multi_info_read(multi, &messages_count)) |msg_| {
const msg: *c.CURLMsg = @ptrCast(msg_); const msg: *c.CURLMsg = @ptrCast(msg_);
@@ -475,10 +478,12 @@ fn processMessages(self: *Client) !void {
.transfer = transfer, .transfer = transfer,
}); });
} }
processed = true;
} else |err| { } else |err| {
self.requestFailed(transfer, err); self.requestFailed(transfer, err);
} }
} }
return processed;
} }
fn endTransfer(self: *Client, transfer: *Transfer) void { fn endTransfer(self: *Client, transfer: *Transfer) void {