From d846042e5a71bee8a94422359e6ffd1f1ce17d50 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Wed, 9 Sep 2026 12:49:32 +0200 Subject: [PATCH] catch error when observing the rate limit --- src/network/HttpClient.zig | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/network/HttpClient.zig b/src/network/HttpClient.zig index fe1fb78e7..2a140079e 100644 --- a/src/network/HttpClient.zig +++ b/src/network/HttpClient.zig @@ -1808,14 +1808,18 @@ fn processOneMessage(self: *Client, msg: http.Handles.MultiMessage, transfer: *T // navigations to it. if (transfer.req.throttle) { if (self.network.rate_limiter) |*rl| { - const status = try msg.conn.getResponseCode(); - rl.observe(URL.getHostname(transfer.req.url), .{ - .status = status, - .retry_after_ms = getRetryAfterMs(msg.conn, status), - }, lp.datetime.milliTimestamp(.boot)) catch |err| { - // rate limit is best effort. - log.warn(.http, "rate limit observe", .{ .err = err }); - }; + // rate limit is best effort: a status we can't read is not worth + // failing an otherwise good response over. + if (msg.conn.getResponseCode()) |status| { + rl.observe(URL.getHostname(transfer.req.url), .{ + .status = status, + .retry_after_ms = getRetryAfterMs(msg.conn, status), + }, lp.datetime.milliTimestamp(.boot)) catch |err| { + log.warn(.http, "rate limit observe", .{ .err = err }); + }; + } else |err| { + log.warn(.http, "rate limit status", .{ .err = err }); + } } }