From b95b94231cf9f0774b615e5c19ef59e7f59ccb1f Mon Sep 17 00:00:00 2001 From: CottageDwellingCat <80918250+CottageDwellingCat@users.noreply.github.com> Date: Wed, 2 Mar 2022 13:03:10 -0600 Subject: [PATCH] Fix NRE when ratelimmited requests don't return a body (#2135) --- src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs index 3eb656745..c596f112b 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs @@ -377,7 +377,8 @@ namespace Discord.Net.Queue // use the payload reset after value var payload = info.ReadRatelimitPayload(body); - resetTick = DateTimeOffset.UtcNow.Add(TimeSpan.FromSeconds(payload.RetryAfter)); + // fallback on stored ratelimit info when payload is null, https://github.com/discord-net/Discord.Net/issues/2123 + resetTick = DateTimeOffset.UtcNow.Add(TimeSpan.FromSeconds(payload?.RetryAfter ?? info.ResetAfter?.TotalSeconds ?? 0)); #if DEBUG_LIMITS Debug.WriteLine($"[{id}] Reset-After: {info.ResetAfter.Value} ({info.ResetAfter?.TotalMilliseconds} ms)"); #endif