Re-enable --insecure_disable_tls_host_verification

Better error logs on http callback error

Fix wait timing
This commit is contained in:
Karl Seguin
2025-08-02 13:08:33 +08:00
parent 3555680335
commit 77475ca5e4
4 changed files with 26 additions and 10 deletions

View File

@@ -53,6 +53,7 @@ pub const App = struct {
var http = try Http.init(allocator, .{
.max_concurrent_transfers = 3,
.tls_verify_host = config.tls_verify_host,
});
errdefer http.deinit();

View File

@@ -317,7 +317,7 @@ pub const Page = struct {
return error.JsError;
}
const ms_elapsed = timer.lap() / 100_000;
const ms_elapsed = timer.lap() / 1_000_000;
if (ms_elapsed > ms_remaining) {
return;
}

View File

@@ -220,7 +220,11 @@ fn perform(self: *Client, timeout_ms: c_int) !void {
self.endTransfer(transfer);
if (errorCheck(msg.data.result)) {
done_callback(ctx) catch |err| error_callback(ctx, err);
done_callback(ctx) catch |err| {
// transfer isn't valid at this point, don't use it.
log.err(.http, "done_callback", .{.err = err});
error_callback(ctx, err);
};
} else |err| {
error_callback(ctx, err);
}
@@ -350,9 +354,14 @@ const Handle = struct {
try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_WRITEFUNCTION, Transfer.bodyCallback));
// tls
// try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_SSL_VERIFYHOST, @as(c_long, 0)));
// try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_SSL_VERIFYPEER, @as(c_long, 0)));
try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_CAINFO_BLOB, ca_blob));
if (opts.tls_verify_host) {
try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_CAINFO_BLOB, ca_blob));
} else {
// Verify peer checks that the cert is signed by a CA, verify host makes sure the
// cert contains the server name.
try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_SSL_VERIFYPEER, @as(c_long, 0)));
try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_SSL_VERIFYHOST, @as(c_long, 0)));
}
// debug
if (comptime Http.ENABLE_DEBUG) {
@@ -423,7 +432,7 @@ pub const Transfer = struct {
const handle: *Handle = @alignCast(@ptrCast(data));
var transfer = fromEasy(handle.easy) catch |err| {
log.err(.http, "retrive private info", .{ .err = err });
log.err(.http, "get private info", .{ .err = err });
return 0;
};
@@ -485,13 +494,17 @@ pub const Transfer = struct {
}
if (buf_len == 2) {
transfer.req.header_done_callback(transfer) catch {
transfer.req.header_done_callback(transfer) catch |err| {
log.err(.http, "header_done_callback", .{.err = err, .req = transfer});
// returning < buf_len terminates the request
return 0;
};
} else {
if (transfer.req.header_callback) |cb| {
cb(transfer, header) catch return 0;
cb(transfer, header) catch |err| {
log.err(.http, "header_callback", .{.err = err, .req = transfer});
return 0;
};
}
}
return buf_len;
@@ -503,7 +516,7 @@ pub const Transfer = struct {
const handle: *Handle = @alignCast(@ptrCast(data));
var transfer = fromEasy(handle.easy) catch |err| {
log.err(.http, "retrive private info", .{ .err = err });
log.err(.http, "get private info", .{ .err = err });
return c.CURL_WRITEFUNC_ERROR;
};
@@ -511,7 +524,8 @@ pub const Transfer = struct {
return chunk_len;
}
transfer.req.data_callback(transfer, buffer[0..chunk_len]) catch {
transfer.req.data_callback(transfer, buffer[0..chunk_len]) catch |err| {
log.err(.http, "data_callback", .{.err = err, .req = transfer});
return c.CURL_WRITEFUNC_ERROR;
};
return chunk_len;

View File

@@ -172,6 +172,7 @@ pub fn errorMCheck(code: c.CURLMcode) errors.Multi!void {
pub const Opts = struct {
timeout_ms: u31 = 0,
max_redirects: u8 = 10,
tls_verify_host: bool = true,
connect_timeout_ms: u31 = 5000,
max_concurrent_transfers: u8 = 5,
};