diff --git a/src/Symfony/Component/Messenger/Retry/MultiplierRetryStrategy.php b/src/Symfony/Component/Messenger/Retry/MultiplierRetryStrategy.php index 8e25783676779..bec4290122cfa 100644 --- a/src/Symfony/Component/Messenger/Retry/MultiplierRetryStrategy.php +++ b/src/Symfony/Component/Messenger/Retry/MultiplierRetryStrategy.php @@ -83,7 +83,7 @@ public function getWaitingTime(Envelope $message, ?\Throwable $throwable = null) $delay = $this->delayMilliseconds * $this->multiplier ** $retries; if ($this->jitter > 0) { - $randomness = (int) ($delay * $this->jitter); + $randomness = (int) min(\PHP_INT_MAX, $delay * $this->jitter); $delay += random_int(-$randomness, +$randomness); } @@ -91,6 +91,6 @@ public function getWaitingTime(Envelope $message, ?\Throwable $throwable = null) return $this->maxDelayMilliseconds; } - return (int) ceil($delay); + return (int) min(\PHP_INT_MAX, ceil($delay)); } } diff --git a/src/Symfony/Component/Messenger/Tests/Retry/MultiplierRetryStrategyTest.php b/src/Symfony/Component/Messenger/Tests/Retry/MultiplierRetryStrategyTest.php index d06426ea40672..d89153ebad19b 100644 --- a/src/Symfony/Component/Messenger/Tests/Retry/MultiplierRetryStrategyTest.php +++ b/src/Symfony/Component/Messenger/Tests/Retry/MultiplierRetryStrategyTest.php @@ -60,6 +60,14 @@ public function testGetWaitTime(int $delay, float $multiplier, int $maxDelay, in $this->assertSame($expectedDelay, $strategy->getWaitingTime($envelope)); } + public function testGetWaitTimeWithOverflowingDelay() + { + $strategy = new MultiplierRetryStrategy(512, \PHP_INT_MAX, 2, 0, 1); + $envelope = new Envelope(new \stdClass(), [new RedeliveryStamp(10)]); + + $this->assertSame(\PHP_INT_MAX, $strategy->getWaitingTime($envelope)); + } + public static function getWaitTimeTests(): iterable { // delay, multiplier, maxDelay, retries, expectedDelay
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: