From 372dd13ebafa4a1351c7b93f66730a9b548406db Mon Sep 17 00:00:00 2001 From: Jon Chambers <63609320+jon-signal@users.noreply.github.com> Date: Fri, 25 Feb 2022 11:42:58 -0500 Subject: [PATCH] Accept both HTTP/413 and HTTP/429 as rate-limit responses. --- .../signalservice/internal/ServiceResponseProcessor.java | 2 +- .../signalservice/internal/push/PushServiceSocket.java | 1 + .../signalservice/internal/websocket/DefaultErrorMapper.java | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/ServiceResponseProcessor.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/ServiceResponseProcessor.java index b316633a25..685f860fc1 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/ServiceResponseProcessor.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/ServiceResponseProcessor.java @@ -86,7 +86,7 @@ public abstract class ServiceResponseProcessor { } protected boolean rateLimit() { - return response.getStatus() == 413; + return response.getStatus() == 413 || response.getStatus() == 429; } protected boolean expectationFailed() { diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java index c6da21422a..6410b9fcf4 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java @@ -1678,6 +1678,7 @@ public class PushServiceSocket { switch (responseCode) { case 413: + case 429: throw new RateLimitException("Rate limit exceeded: " + responseCode); case 401: case 403: diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/websocket/DefaultErrorMapper.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/websocket/DefaultErrorMapper.java index 86ec4ddec5..0c825a310c 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/websocket/DefaultErrorMapper.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/websocket/DefaultErrorMapper.java @@ -100,6 +100,7 @@ public final class DefaultErrorMapper implements ErrorMapper { return e; } case 413: + case 429: return new RateLimitException("Rate limit exceeded: " + status); case 417: return new ExpectationFailedException();