summaryrefslogtreecommitdiffstats
path: root/system/core
diff options
context:
space:
mode:
authorPascal Kriete <pascal.kriete@ellislab.com>2010-04-09 21:16:16 +0200
committerPascal Kriete <pascal.kriete@ellislab.com>2010-04-09 21:16:16 +0200
commit676e1cda78b7bc4eede7cad509a8d9f015a51816 (patch)
tree749feaab2495061f895e8bae9667f3e0b31f708c /system/core
parent73c19fc2e15bb542053bc347ee922ceb26114696 (diff)
Adding output library exceptions for servers with zlib.output_compression enabled.
Diffstat (limited to 'system/core')
-rw-r--r--system/core/Output.php15
1 files changed, 14 insertions, 1 deletions
diff --git a/system/core/Output.php b/system/core/Output.php
index ac4129405..e25e62197 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -34,10 +34,13 @@ class CI_Output {
var $enable_profiler = FALSE;
var $parse_exec_vars = TRUE; // whether or not to parse variables like {elapsed_time} and {memory_usage}
+ var $_zlib_oc = FALSE;
var $_profiler_sections = array();
function CI_Output()
{
+ $this->_zlib_oc = @ini_get('zlib.output_compression');
+
log_message('debug', "Output Class Initialized");
}
@@ -111,6 +114,16 @@ class CI_Output {
*/
function set_header($header, $replace = TRUE)
{
+ // If zlib.output_compression is enabled it will compress the output,
+ // but it will not modify the content-length header to compensate for
+ // the reduction, causing the browser to hang waiting for more data.
+ // We'll just skip content-length in those cases.
+
+ if ($this->_zlib_oc && strncasecmp($header, 'content-length', 14) == 0)
+ {
+ return;
+ }
+
$this->headers[] = array($header, $replace);
}
@@ -234,7 +247,7 @@ class CI_Output {
// --------------------------------------------------------------------
// Is compression requested?
- if ($CFG->item('compress_output') === TRUE)
+ if ($CFG->item('compress_output') === TRUE && $this->_zlib_oc == FALSE)
{
if (extension_loaded('zlib'))
{