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, .{ var http = try Http.init(allocator, .{
.max_concurrent_transfers = 3, .max_concurrent_transfers = 3,
.tls_verify_host = config.tls_verify_host,
}); });
errdefer http.deinit(); errdefer http.deinit();

View File

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

View File

@@ -220,7 +220,11 @@ fn perform(self: *Client, timeout_ms: c_int) !void {
self.endTransfer(transfer); self.endTransfer(transfer);
if (errorCheck(msg.data.result)) { 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| { } else |err| {
error_callback(ctx, err); error_callback(ctx, err);
} }
@@ -350,9 +354,14 @@ const Handle = struct {
try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_WRITEFUNCTION, Transfer.bodyCallback)); try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_WRITEFUNCTION, Transfer.bodyCallback));
// tls // tls
// try errorCheck(c.curl_easy_setopt(easy, c.CURLOPT_SSL_VERIFYHOST, @as(c_long, 0))); if (opts.tls_verify_host) {
// 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)); 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 // debug
if (comptime Http.ENABLE_DEBUG) { if (comptime Http.ENABLE_DEBUG) {
@@ -423,7 +432,7 @@ pub const Transfer = struct {
const handle: *Handle = @alignCast(@ptrCast(data)); const handle: *Handle = @alignCast(@ptrCast(data));
var transfer = fromEasy(handle.easy) catch |err| { 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; return 0;
}; };
@@ -485,13 +494,17 @@ pub const Transfer = struct {
} }
if (buf_len == 2) { 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 // returning < buf_len terminates the request
return 0; return 0;
}; };
} else { } else {
if (transfer.req.header_callback) |cb| { 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; return buf_len;
@@ -503,7 +516,7 @@ pub const Transfer = struct {
const handle: *Handle = @alignCast(@ptrCast(data)); const handle: *Handle = @alignCast(@ptrCast(data));
var transfer = fromEasy(handle.easy) catch |err| { 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; return c.CURL_WRITEFUNC_ERROR;
}; };
@@ -511,7 +524,8 @@ pub const Transfer = struct {
return chunk_len; 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 c.CURL_WRITEFUNC_ERROR;
}; };
return chunk_len; return chunk_len;

View File

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