diff options
author | Pascal Kriete <pascal.kriete@ellislab.com> | 2010-04-09 21:16:16 +0200 |
---|---|---|
committer | Pascal Kriete <pascal.kriete@ellislab.com> | 2010-04-09 21:16:16 +0200 |
commit | 676e1cda78b7bc4eede7cad509a8d9f015a51816 (patch) | |
tree | 749feaab2495061f895e8bae9667f3e0b31f708c /system/core | |
parent | 73c19fc2e15bb542053bc347ee922ceb26114696 (diff) |
Adding output library exceptions for servers with zlib.output_compression enabled.
Diffstat (limited to 'system/core')
-rw-r--r-- | system/core/Output.php | 15 |
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')) { |