From b577ce665a5456d893428e33698001c494fd9997 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sun, 23 Jan 2011 08:47:00 +0100 Subject: [PATCH] [HttpKernel] fixed scope management in HttpKernel We should always leave the request scope at the end of the request processing. If not, the HttpKernel leaves the container in a different state. --- .../Bundle/FrameworkBundle/HttpKernel.php | 16 ++++----- .../FrameworkBundle/Tests/HttpKernelTest.php | 34 ++++++------------- 2 files changed, 16 insertions(+), 34 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/HttpKernel.php b/src/Symfony/Bundle/FrameworkBundle/HttpKernel.php index 955fa3fa21d6..020546499d36 100644 --- a/src/Symfony/Bundle/FrameworkBundle/HttpKernel.php +++ b/src/Symfony/Bundle/FrameworkBundle/HttpKernel.php @@ -32,18 +32,14 @@ public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQ try { $response = parent::handle($request, $type, $catch); - - if (HttpKernelInterface::MASTER_REQUEST !== $type) { - $this->container->leaveScope('request'); - } - - return $response; } catch (\Exception $e) { - if (HttpKernelInterface::MASTER_REQUEST !== $type) { - $this->container->leaveScope('request'); - } + $this->container->leaveScope('request'); throw $e; } + + $this->container->leaveScope('request'); + + return $response; } -} \ No newline at end of file +} diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/HttpKernelTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/HttpKernelTest.php index 31bd18256e8d..d11366c01bad 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/HttpKernelTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/HttpKernelTest.php @@ -25,18 +25,11 @@ public function testHandle($type) ->method('enterScope') ->with($this->equalTo('request')) ; - if ($type !== HttpKernelInterface::MASTER_REQUEST) { - $container - ->expects($this->once()) - ->method('leaveScope') - ->with($this->equalTo('request')) - ; - } else { - $container - ->expects($this->never()) - ->method('leaveScope') - ; - } + $container + ->expects($this->once()) + ->method('leaveScope') + ->with($this->equalTo('request')) + ; $container ->expects($this->once()) ->method('set') @@ -80,18 +73,11 @@ public function testHandleRestoresThePreviousRequestOnException($type) ->method('enterScope') ->with($this->equalTo('request')) ; - if ($type !== HttpKernelInterface::MASTER_REQUEST) { - $container - ->expects($this->once()) - ->method('leaveScope') - ->with($this->equalTo('request')) - ; - } else { - $container - ->expects($this->never()) - ->method('leaveScope') - ; - } + $container + ->expects($this->once()) + ->method('leaveScope') + ->with($this->equalTo('request')) + ; $container ->expects($this->once()) ->method('set')