From 4f2d38e9a3c6997ea0886ede5aaf337dfd0fc938 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 26 Aug 2022 16:34:48 +0200 Subject: [PATCH 01/13] Update VERSION for 4.4.45 --- Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel.php b/Kernel.php index 3a699112e1..adb9a94727 100644 --- a/Kernel.php +++ b/Kernel.php @@ -76,12 +76,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private static $freshCache = []; - public const VERSION = '4.4.45-DEV'; + public const VERSION = '4.4.45'; public const VERSION_ID = 40445; public const MAJOR_VERSION = 4; public const MINOR_VERSION = 4; public const RELEASE_VERSION = 45; - public const EXTRA_VERSION = 'DEV'; + public const EXTRA_VERSION = ''; public const END_OF_MAINTENANCE = '11/2022'; public const END_OF_LIFE = '11/2023'; From 721fef27e9721c59f4213262c7b5f1815571ec07 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 26 Aug 2022 16:40:14 +0200 Subject: [PATCH 02/13] Bump Symfony version to 4.4.46 --- Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Kernel.php b/Kernel.php index adb9a94727..09c0f68162 100644 --- a/Kernel.php +++ b/Kernel.php @@ -76,12 +76,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private static $freshCache = []; - public const VERSION = '4.4.45'; - public const VERSION_ID = 40445; + public const VERSION = '4.4.46-DEV'; + public const VERSION_ID = 40446; public const MAJOR_VERSION = 4; public const MINOR_VERSION = 4; - public const RELEASE_VERSION = 45; - public const EXTRA_VERSION = ''; + public const RELEASE_VERSION = 46; + public const EXTRA_VERSION = 'DEV'; public const END_OF_MAINTENANCE = '11/2022'; public const END_OF_LIFE = '11/2023'; From 37f660fa3bcd78fe4893ce23ebe934618ec099be Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 26 Aug 2022 16:40:40 +0200 Subject: [PATCH 03/13] Update VERSION for 5.4.12 --- Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel.php b/Kernel.php index 266492171b..efedd884ad 100644 --- a/Kernel.php +++ b/Kernel.php @@ -78,12 +78,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl */ private static $freshCache = []; - public const VERSION = '5.4.12-DEV'; + public const VERSION = '5.4.12'; public const VERSION_ID = 50412; public const MAJOR_VERSION = 5; public const MINOR_VERSION = 4; public const RELEASE_VERSION = 12; - public const EXTRA_VERSION = 'DEV'; + public const EXTRA_VERSION = ''; public const END_OF_MAINTENANCE = '11/2024'; public const END_OF_LIFE = '11/2025'; From 79ea489538c33b95cc90b7d746315c1855f29739 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 26 Aug 2022 16:44:24 +0200 Subject: [PATCH 04/13] Bump Symfony version to 5.4.13 --- Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Kernel.php b/Kernel.php index efedd884ad..7a7e678a4f 100644 --- a/Kernel.php +++ b/Kernel.php @@ -78,12 +78,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl */ private static $freshCache = []; - public const VERSION = '5.4.12'; - public const VERSION_ID = 50412; + public const VERSION = '5.4.13-DEV'; + public const VERSION_ID = 50413; public const MAJOR_VERSION = 5; public const MINOR_VERSION = 4; - public const RELEASE_VERSION = 12; - public const EXTRA_VERSION = ''; + public const RELEASE_VERSION = 13; + public const EXTRA_VERSION = 'DEV'; public const END_OF_MAINTENANCE = '11/2024'; public const END_OF_LIFE = '11/2025'; From 8f3563e4518cfee24a5cc724434cc60e0818abec Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 26 Aug 2022 16:45:39 +0200 Subject: [PATCH 05/13] Update VERSION for 6.0.12 --- Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel.php b/Kernel.php index 8b3106f5b9..697a69b4bc 100644 --- a/Kernel.php +++ b/Kernel.php @@ -78,12 +78,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl */ private static array $freshCache = []; - public const VERSION = '6.0.12-DEV'; + public const VERSION = '6.0.12'; public const VERSION_ID = 60012; public const MAJOR_VERSION = 6; public const MINOR_VERSION = 0; public const RELEASE_VERSION = 12; - public const EXTRA_VERSION = 'DEV'; + public const EXTRA_VERSION = ''; public const END_OF_MAINTENANCE = '01/2023'; public const END_OF_LIFE = '01/2023'; From bc44d471cc9ac3ca2ebe3ef415d0d6c7e018539d Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 26 Aug 2022 16:49:37 +0200 Subject: [PATCH 06/13] Bump Symfony version to 6.0.13 --- Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Kernel.php b/Kernel.php index 697a69b4bc..eb53328f2c 100644 --- a/Kernel.php +++ b/Kernel.php @@ -78,12 +78,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl */ private static array $freshCache = []; - public const VERSION = '6.0.12'; - public const VERSION_ID = 60012; + public const VERSION = '6.0.13-DEV'; + public const VERSION_ID = 60013; public const MAJOR_VERSION = 6; public const MINOR_VERSION = 0; - public const RELEASE_VERSION = 12; - public const EXTRA_VERSION = ''; + public const RELEASE_VERSION = 13; + public const EXTRA_VERSION = 'DEV'; public const END_OF_MAINTENANCE = '01/2023'; public const END_OF_LIFE = '01/2023'; From b7d593c7c43d6d94490cb164a316befc3fb90580 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 26 Aug 2022 16:54:57 +0200 Subject: [PATCH 07/13] Bump Symfony version to 6.1.5 --- Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Kernel.php b/Kernel.php index ec49d1a018..69d906ccd6 100644 --- a/Kernel.php +++ b/Kernel.php @@ -78,12 +78,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl */ private static array $freshCache = []; - public const VERSION = '6.1.4'; - public const VERSION_ID = 60104; + public const VERSION = '6.1.5-DEV'; + public const VERSION_ID = 60105; public const MAJOR_VERSION = 6; public const MINOR_VERSION = 1; - public const RELEASE_VERSION = 4; - public const EXTRA_VERSION = ''; + public const RELEASE_VERSION = 5; + public const EXTRA_VERSION = 'DEV'; public const END_OF_MAINTENANCE = '01/2023'; public const END_OF_LIFE = '01/2023'; From dca2563c109e50fefeddefc99081a6bc10ace48e Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 30 Aug 2022 18:39:01 +0200 Subject: [PATCH 08/13] [HttpKernel] lock when writting profiles --- Profiler/FileProfilerStorage.php | 56 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Profiler/FileProfilerStorage.php b/Profiler/FileProfilerStorage.php index d729994c1f..aa494691d1 100644 --- a/Profiler/FileProfilerStorage.php +++ b/Profiler/FileProfilerStorage.php @@ -115,19 +115,7 @@ public function purge() */ public function read($token): ?Profile { - if (!$token || !file_exists($file = $this->getFilename($token))) { - return null; - } - - if (\function_exists('gzcompress')) { - $file = 'compress.zlib://'.$file; - } - - if (!$data = unserialize(file_get_contents($file))) { - return null; - } - - return $this->createProfileFromData($token, $data); + return $this->doRead($token); } /** @@ -169,14 +157,13 @@ public function write(Profile $profile): bool 'status_code' => $profile->getStatusCode(), ]; - $context = stream_context_create(); + $data = serialize($data); - if (\function_exists('gzcompress')) { - $file = 'compress.zlib://'.$file; - stream_context_set_option($context, 'zlib', 'level', 3); + if (\function_exists('gzencode')) { + $data = gzencode($data, 3); } - if (false === file_put_contents($file, serialize($data), 0, $context)) { + if (false === file_put_contents($file, $data, \LOCK_EX)) { return false; } @@ -293,21 +280,34 @@ protected function createProfileFromData($token, $data, $parent = null) } foreach ($data['children'] as $token) { - if (!$token || !file_exists($file = $this->getFilename($token))) { - continue; + if (null !== $childProfile = $this->doRead($token, $profile)) { + $profile->addChild($childProfile); } + } - if (\function_exists('gzcompress')) { - $file = 'compress.zlib://'.$file; - } + return $profile; + } - if (!$childData = unserialize(file_get_contents($file))) { - continue; - } + private function doRead($token, Profile $profile = null): ?Profile + { + if (!$token || !file_exists($file = $this->getFilename($token))) { + return null; + } + + $h = fopen($file, 'r'); + flock($h, \LOCK_SH); + $data = stream_get_contents($h); + flock($h, \LOCK_UN); + fclose($h); - $profile->addChild($this->createProfileFromData($token, $childData, $profile)); + if (\function_exists('gzdecode')) { + $data = @gzdecode($data) ?: $data; } - return $profile; + if (!$data = unserialize($data)) { + return null; + } + + return $this->createProfileFromData($token, $data, $profile); } } From 53aa7cf03143f990a47de18157d312d3bd66c11b Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 31 Aug 2022 10:56:54 +0200 Subject: [PATCH 09/13] [HttpKernel] fix merge --- Controller/ArgumentResolver/DateTimeValueResolver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Controller/ArgumentResolver/DateTimeValueResolver.php b/Controller/ArgumentResolver/DateTimeValueResolver.php index 55007bef7b..d8953f564b 100644 --- a/Controller/ArgumentResolver/DateTimeValueResolver.php +++ b/Controller/ArgumentResolver/DateTimeValueResolver.php @@ -65,7 +65,7 @@ public function resolve(Request $request, ArgumentMetadata $argument): iterable if (null !== $format) { $date = $class::createFromFormat($format, $value); - if ($class::getLastErrors()['warning_count']) { + if (($class::getLastErrors() ?: ['warning_count' => 0])['warning_count']) { $date = false; } } else { From ad0cb4fa755331a6379d6b36e41c63147ae7a2e6 Mon Sep 17 00:00:00 2001 From: Andreas Schempp Date: Mon, 5 Sep 2022 16:21:17 +0200 Subject: [PATCH 10/13] Prevent exception if request stack is empty --- DataCollector/RequestDataCollector.php | 2 +- Tests/DataCollector/RequestDataCollectorTest.php | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/DataCollector/RequestDataCollector.php b/DataCollector/RequestDataCollector.php index 523f5c957f..951860a225 100644 --- a/DataCollector/RequestDataCollector.php +++ b/DataCollector/RequestDataCollector.php @@ -110,7 +110,7 @@ public function collect(Request $request, Response $response, \Throwable $except 'session_metadata' => $sessionMetadata, 'session_attributes' => $sessionAttributes, 'session_usages' => array_values($this->sessionUsages), - 'stateless_check' => $this->requestStack && $this->requestStack->getMainRequest()->attributes->get('_stateless', false), + 'stateless_check' => $this->requestStack && ($mainRequest = $this->requestStack->getMainRequest()) && $mainRequest->attributes->get('_stateless', false), 'flashes' => $flashes, 'path_info' => $request->getPathInfo(), 'controller' => 'n/a', diff --git a/Tests/DataCollector/RequestDataCollectorTest.php b/Tests/DataCollector/RequestDataCollectorTest.php index 0c576e00ed..d7c8b302b6 100644 --- a/Tests/DataCollector/RequestDataCollectorTest.php +++ b/Tests/DataCollector/RequestDataCollectorTest.php @@ -312,6 +312,15 @@ public function testStatelessCheck() $collector->lateCollect(); $this->assertTrue($collector->getStatelessCheck()); + + $requestStack = new RequestStack(); + $request = $this->createRequest(); + + $collector = new RequestDataCollector($requestStack); + $collector->collect($request, $response = $this->createResponse()); + $collector->lateCollect(); + + $this->assertFalse($collector->getStatelessCheck()); } public function testItHidesPassword() From fb0bd60d4e10497a9bed2b33e0474b39a19f93ab Mon Sep 17 00:00:00 2001 From: Mathieu Date: Wed, 21 Sep 2022 09:27:00 +0200 Subject: [PATCH 11/13] Fix LocaleListenerTest Accept-Language headers --- Tests/EventListener/LocaleListenerTest.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Tests/EventListener/LocaleListenerTest.php b/Tests/EventListener/LocaleListenerTest.php index 4c1c624de2..824d906340 100644 --- a/Tests/EventListener/LocaleListenerTest.php +++ b/Tests/EventListener/LocaleListenerTest.php @@ -120,7 +120,7 @@ public function testRequestLocaleIsNotOverridden() public function testRequestPreferredLocaleFromAcceptLanguageHeader() { $request = Request::create('/'); - $request->headers->set('Accept-Language', ['Accept-Language: fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5']); + $request->headers->set('Accept-Language', 'fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5'); $listener = new LocaleListener($this->requestStack, 'de', null, true, ['de', 'fr']); $event = $this->getEvent($request); @@ -133,7 +133,7 @@ public function testRequestPreferredLocaleFromAcceptLanguageHeader() public function testRequestSecondPreferredLocaleFromAcceptLanguageHeader() { $request = Request::create('/'); - $request->headers->set('Accept-Language', ['Accept-Language: fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5']); + $request->headers->set('Accept-Language', 'fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5'); $listener = new LocaleListener($this->requestStack, 'de', null, true, ['de', 'en']); $event = $this->getEvent($request); @@ -146,7 +146,7 @@ public function testRequestSecondPreferredLocaleFromAcceptLanguageHeader() public function testDontUseAcceptLanguageHeaderIfNotEnabled() { $request = Request::create('/'); - $request->headers->set('Accept-Language', ['Accept-Language: fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5']); + $request->headers->set('Accept-Language', 'fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5'); $listener = new LocaleListener($this->requestStack, 'de', null, false, ['de', 'en']); $event = $this->getEvent($request); @@ -159,7 +159,7 @@ public function testDontUseAcceptLanguageHeaderIfNotEnabled() public function testRequestUnavailablePreferredLocaleFromAcceptLanguageHeader() { $request = Request::create('/'); - $request->headers->set('Accept-Language', ['Accept-Language: fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5']); + $request->headers->set('Accept-Language', 'fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5'); $listener = new LocaleListener($this->requestStack, 'de', null, true, ['de', 'it']); $event = $this->getEvent($request); @@ -172,7 +172,7 @@ public function testRequestUnavailablePreferredLocaleFromAcceptLanguageHeader() public function testRequestNoLocaleFromAcceptLanguageHeader() { $request = Request::create('/'); - $request->headers->set('Accept-Language', ['Accept-Language: fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5']); + $request->headers->set('Accept-Language', 'fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5'); $listener = new LocaleListener($this->requestStack, 'de', null, true); $event = $this->getEvent($request); @@ -186,7 +186,7 @@ public function testRequestAttributeLocaleNotOverridenFromAcceptLanguageHeader() { $request = Request::create('/'); $request->attributes->set('_locale', 'it'); - $request->headers->set('Accept-Language', ['Accept-Language: fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5']); + $request->headers->set('Accept-Language', 'fr-FR,fr;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6,es;q=0.5'); $listener = new LocaleListener($this->requestStack, 'de', null, true, ['fr', 'en']); $event = $this->getEvent($request); From 115a7bbc449ffd846572df7a117b97d766ee9402 Mon Sep 17 00:00:00 2001 From: Mathieu Date: Fri, 23 Sep 2022 16:33:10 +0200 Subject: [PATCH 12/13] [HttpKernel] Use Accept-Language header even if there are no enabled locales --- EventListener/LocaleListener.php | 6 ++++-- Tests/EventListener/LocaleListenerTest.php | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/EventListener/LocaleListener.php b/EventListener/LocaleListener.php index ede5e7f88b..2502fa4be9 100644 --- a/EventListener/LocaleListener.php +++ b/EventListener/LocaleListener.php @@ -68,8 +68,10 @@ private function setLocale(Request $request) { if ($locale = $request->attributes->get('_locale')) { $request->setLocale($locale); - } elseif ($this->useAcceptLanguageHeader && $this->enabledLocales && ($preferredLanguage = $request->getPreferredLanguage($this->enabledLocales))) { - $request->setLocale($preferredLanguage); + } elseif ($this->useAcceptLanguageHeader) { + if ($preferredLanguage = $request->getPreferredLanguage($this->enabledLocales)) { + $request->setLocale($preferredLanguage); + } $request->attributes->set('_vary_by_language', true); } } diff --git a/Tests/EventListener/LocaleListenerTest.php b/Tests/EventListener/LocaleListenerTest.php index 824d906340..63e5f4bd18 100644 --- a/Tests/EventListener/LocaleListenerTest.php +++ b/Tests/EventListener/LocaleListenerTest.php @@ -179,7 +179,7 @@ public function testRequestNoLocaleFromAcceptLanguageHeader() $listener->setDefaultLocale($event); $listener->onKernelRequest($event); - $this->assertEquals('de', $request->getLocale()); + $this->assertEquals('fr_FR', $request->getLocale()); } public function testRequestAttributeLocaleNotOverridenFromAcceptLanguageHeader() From bf433ef30c2dfbf1f47449d5dce8be243e8a0012 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 30 Sep 2022 10:10:57 +0200 Subject: [PATCH 13/13] Update VERSION for 6.1.5 --- Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel.php b/Kernel.php index 69d906ccd6..67145a2ed7 100644 --- a/Kernel.php +++ b/Kernel.php @@ -78,12 +78,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl */ private static array $freshCache = []; - public const VERSION = '6.1.5-DEV'; + public const VERSION = '6.1.5'; public const VERSION_ID = 60105; public const MAJOR_VERSION = 6; public const MINOR_VERSION = 1; public const RELEASE_VERSION = 5; - public const EXTRA_VERSION = 'DEV'; + public const EXTRA_VERSION = ''; public const END_OF_MAINTENANCE = '01/2023'; public const END_OF_LIFE = '01/2023';