diff --git a/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php b/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php index bf7ad591e454d..5484664e2c4ec 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/RedisExt/ConnectionTest.php @@ -133,6 +133,9 @@ public function provideAuthDsn(): \Generator { yield 'Password only' => ['password', 'redis://password@localhost/queue']; yield 'User and password' => [['user', 'password'], 'redis://user:password@localhost/queue']; + yield 'User and colon' => ['user', 'redis://user:@localhost/queue']; + yield 'Colon and password' => ['password', 'redis://:password@localhost/queue']; + yield 'Colon and falsy password' => ['0', 'redis://:0@localhost/queue']; } public function testNoAuthWithEmptyPassword() diff --git a/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php b/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php index 88b1a7e5a5f28..340cd792d3c06 100644 --- a/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php +++ b/src/Symfony/Component/Messenger/Transport/RedisExt/Connection.php @@ -93,12 +93,14 @@ public static function fromDsn(string $dsn, array $redisOptions = [], \Redis $re $stream = $pathParts[1] ?? $redisOptions['stream'] ?? null; $group = $pathParts[2] ?? $redisOptions['group'] ?? null; $consumer = $pathParts[3] ?? $redisOptions['consumer'] ?? null; + $pass = '' !== ($parsedUrl['pass'] ?? '') ? $parsedUrl['pass'] : null; + $user = '' !== ($parsedUrl['user'] ?? '') ? $parsedUrl['user'] : null; $connectionCredentials = [ 'host' => $parsedUrl['host'] ?? '127.0.0.1', 'port' => $parsedUrl['port'] ?? 6379, // See: https://github.com/phpredis/phpredis/#auth - 'auth' => isset($parsedUrl['pass']) && isset($parsedUrl['user']) ? [$parsedUrl['user'], $parsedUrl['pass']] : $parsedUrl['pass'] ?? $parsedUrl['user'] ?? null, + 'auth' => null !== $pass && null !== $user ? [$user, $pass] : ($pass ?? $user), ]; if (isset($parsedUrl['query'])) {