summaryrefslogtreecommitdiff
path: root/app/Core
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-05-25 21:28:33 -0400
committerFrederic Guillot <fred@kanboard.net>2016-05-25 21:28:33 -0400
commit872dc79dbd8b04424520e32675a6e0dcb6ed44bc (patch)
tree46b08d77e39c09fd415e9c943931db0a03de7c99 /app/Core
parent74a84a28e34f3c1c38631fb80cc74ab589a44298 (diff)
Do not execute controller if the response is already sent
Diffstat (limited to 'app/Core')
-rw-r--r--app/Core/Controller/Runner.php5
-rw-r--r--app/Core/Http/Response.php14
2 files changed, 18 insertions, 1 deletions
diff --git a/app/Core/Controller/Runner.php b/app/Core/Controller/Runner.php
index b973c098..8353cf69 100644
--- a/app/Core/Controller/Runner.php
+++ b/app/Core/Controller/Runner.php
@@ -26,7 +26,10 @@ class Runner extends Base
{
try {
$this->executeMiddleware();
- $this->executeController();
+
+ if (!$this->response->isResponseAlreadySent()) {
+ $this->executeController();
+ }
} catch (PageNotFoundException $e) {
$controllerObject = new AppController($this->container);
$controllerObject->notFound($e->hasLayout());
diff --git a/app/Core/Http/Response.php b/app/Core/Http/Response.php
index 1c5310d0..0f16fb65 100644
--- a/app/Core/Http/Response.php
+++ b/app/Core/Http/Response.php
@@ -16,6 +16,18 @@ class Response extends Base
private $httpStatusCode = 200;
private $httpHeaders = array();
private $httpBody = '';
+ private $responseSent = false;
+
+ /**
+ * Return true if the response have been sent to the user agent
+ *
+ * @access public
+ * @return bool
+ */
+ public function isResponseAlreadySent()
+ {
+ return $this->responseSent;
+ }
/**
* Set HTTP status code
@@ -187,6 +199,8 @@ class Response extends Base
*/
public function send()
{
+ $this->responseSent = true;
+
if ($this->httpStatusCode !== 200) {
header('Status: '.$this->httpStatusCode);
header($this->request->getServerVariable('SERVER_PROTOCOL').' '.$this->httpStatusCode);