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();