diff --git a/app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php b/app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php
index 5b1bf2d3c0a71..97442f3ecbed9 100644
--- a/app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php
@@ -182,6 +182,7 @@ public function onInsertAction()
*/
public function thumbnailAction()
{
+ $this->getResponse()->disableOutput();
$file = $this->getRequest()->getParam('file');
$file = Mage::helper('Mage_Cms_Helper_Wysiwyg_Images')->idDecode($file);
$thumb = $this->getStorage()->resizeOnTheFly($file);
diff --git a/app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php b/app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php
index caf3e505e00a9..2080997c113e8 100644
--- a/app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php
@@ -40,6 +40,7 @@ class Mage_Adminhtml_Cms_WysiwygController extends Mage_Adminhtml_Controller_Act
*/
public function directiveAction()
{
+ $this->getResponse()->disableOutput();
$directive = $this->getRequest()->getParam('___directive');
$directive = Mage::helper('Mage_Core_Helper_Data')->urlDecode($directive);
$url = Mage::getModel('Mage_Core_Model_Email_Template_Filter')->filter($directive);
diff --git a/app/code/core/Mage/Core/Controller/Response/Http.php b/app/code/core/Mage/Core/Controller/Response/Http.php
index db9796e9c2463..4b8debfe10ba1 100644
--- a/app/code/core/Mage/Core/Controller/Response/Http.php
+++ b/app/code/core/Mage/Core/Controller/Response/Http.php
@@ -39,6 +39,20 @@ class Mage_Core_Controller_Response_Http extends Zend_Controller_Response_Http
*/
protected static $_transportObject = null;
+ /**
+ * @var bool
+ */
+ protected $_isOutputDisabled = false;
+
+ /**
+ * Disable response output; useful for situations where the response was already rendered such as
+ * with an image library that uses direct output.
+ */
+ public function disableOutput()
+ {
+ $this->_isOutputDisabled = true;
+ }
+
/**
* Fixes CGI only one Status header allowed bug
*
@@ -77,10 +91,15 @@ public function sendHeaders()
return parent::sendHeaders();
}
+ /**
+ * Dispatch an event before the response is rendered and only render response if it is not disabled.
+ */
public function sendResponse()
{
Mage::dispatchEvent('http_response_send_before', array('response'=>$this));
- return parent::sendResponse();
+ if ( ! $this->_isOutputDisabled) {
+ return parent::sendResponse();
+ }
}
/**