From f9909108653bc077cd2a7869b751e58d5ed31ea7 Mon Sep 17 00:00:00 2001 From: primetime43 <12754111+primetime43@users.noreply.github.com> Date: Mon, 18 May 2026 20:13:14 -0400 Subject: [PATCH] Make rate-limit header parsing null-safe Use ParseOrNull helpers for X-RateLimit-Remaining and X-RateLimit-Reset-After header values and make the TimeSpan conversion null-safe. This prevents exceptions when rate-limit headers are missing or malformed and keeps resetAfterDelay nullable while preserving existing rate-limit logic. --- DiscordChatExporter.Core/Discord/DiscordClient.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DiscordChatExporter.Core/Discord/DiscordClient.cs b/DiscordChatExporter.Core/Discord/DiscordClient.cs index d49a73f1..d74ccd7b 100644 --- a/DiscordChatExporter.Core/Discord/DiscordClient.cs +++ b/DiscordChatExporter.Core/Discord/DiscordClient.cs @@ -856,12 +856,12 @@ public class DiscordClient( { var remainingRequestCount = response .Headers.TryGetValue("X-RateLimit-Remaining") - ?.Pipe(s => int.Parse(s, CultureInfo.InvariantCulture)); + ?.Pipe(s => int.ParseOrNull(s, CultureInfo.InvariantCulture)); var resetAfterDelay = response .Headers.TryGetValue("X-RateLimit-Reset-After") - ?.Pipe(s => double.Parse(s, CultureInfo.InvariantCulture)) - .Pipe(TimeSpan.FromSeconds); + ?.Pipe(s => double.ParseOrNull(s, CultureInfo.InvariantCulture)) + ?.Pipe(TimeSpan.FromSeconds); if (remainingRequestCount <= 0 && resetAfterDelay is not null) {