Respect rate limit in send jobs.

This commit is contained in:
Cody Henthorne
2025-07-22 09:37:27 -04:00
committed by Michelle Tang
parent d1c02ac454
commit 635aa8791f
3 changed files with 14 additions and 5 deletions

View File

@@ -75,6 +75,7 @@ import org.whispersystems.signalservice.api.messages.shared.SharedContact;
import org.whispersystems.signalservice.api.push.ServiceId.ACI;
import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException;
import org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException;
import org.whispersystems.signalservice.api.push.exceptions.RateLimitException;
import org.whispersystems.signalservice.api.push.exceptions.ServerRejectedException;
import org.whispersystems.signalservice.internal.push.BodyRange;
@@ -173,6 +174,11 @@ public abstract class PushSendJob extends SendJob {
if (backoff >= 0) {
return TimeUnit.SECONDS.toMillis(backoff);
}
} else if (exception instanceof RateLimitException) {
long backoff = ((RateLimitException) exception).getRetryAfterMilliseconds().orElse(-1L);
if (backoff >= 0) {
return backoff;
}
} else if (exception instanceof NonSuccessfulResponseCodeException) {
if (((NonSuccessfulResponseCodeException) exception).is5xx()) {
return BackoffUtil.exponentialBackoff(pastAttemptCount, RemoteConfig.getServerErrorMaxBackoff());