summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/zlib/tests/ob_004.phpt23
-rw-r--r--ext/zlib/tests/ob_005.phpt19
-rw-r--r--ext/zlib/zlib.c15
3 files changed, 50 insertions, 7 deletions
diff --git a/ext/zlib/tests/ob_004.phpt b/ext/zlib/tests/ob_004.phpt
new file mode 100644
index 0000000000..874fb8a685
--- /dev/null
+++ b/ext/zlib/tests/ob_004.phpt
@@ -0,0 +1,23 @@
+--TEST--
+ob_gzhandler
+--SKIPIF--
+<?php
+if (!extension_loaded("zlib")) die("skip need ext/zlib");
+if (false === stristr(PHP_SAPI, "cgi")) die("skip need sapi/cgi");
+?>
+--INI--
+zlib.output_compression=0
+--ENV--
+HTTP_ACCEPT_ENCODING=gzip
+--FILE--
+<?php
+ob_start("ob_gzhandler");
+echo "hi\n";
+?>
+--EXPECTF--
+%s
+Content-Encoding: gzip
+Vary: Accept-Encoding
+%s
+
+‹%s
diff --git a/ext/zlib/tests/ob_005.phpt b/ext/zlib/tests/ob_005.phpt
new file mode 100644
index 0000000000..12083d7289
--- /dev/null
+++ b/ext/zlib/tests/ob_005.phpt
@@ -0,0 +1,19 @@
+--TEST--
+ob_gzhandler
+--SKIPIF--
+<?php
+if (!extension_loaded("zlib")) die("skip need ext/zlib");
+if (false === stristr(PHP_SAPI, "cgi")) die("skip need sapi/cgi");
+?>
+--INI--
+zlib.output_compression=0
+--ENV--
+HTTP_ACCEPT_ENCODING=gzip
+--FILE--
+<?php
+ob_start("ob_gzhandler");
+ini_set("zlib.output_compression", 0);
+echo "hi\n";
+?>
+--EXPECTF--
+%shi
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 8e20190b05..7e427da5f8 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -105,10 +105,11 @@ php_output_handler *php_zlib_output_handler_init(zval *handler_name, size_t chun
{
php_output_handler *h = NULL;
- if (php_zlib_output_encoding(TSRMLS_C)) {
- if ((h = php_output_handler_create_internal(handler_name, php_zlib_output_handler, chunk_size, flags TSRMLS_CC))) {
- php_output_handler_set_context(h, ecalloc(1, sizeof(php_zlib_context)), php_zlib_output_handler_dtor TSRMLS_CC);
- }
+ if (!ZLIBG(output_compression)) {
+ ZLIBG(output_compression) = chunk_size ? chunk_size : PHP_OUTPUT_HANDLER_DEFAULT_SIZE;
+ }
+ if ((h = php_output_handler_create_internal(handler_name, php_zlib_output_handler, chunk_size, flags TSRMLS_CC))) {
+ php_output_handler_set_context(h, ecalloc(1, sizeof(php_zlib_context)), php_zlib_output_handler_dtor TSRMLS_CC);
}
return h;
@@ -119,7 +120,7 @@ php_output_handler *php_zlib_output_handler_init(zval *handler_name, size_t chun
int php_zlib_output_handler(void **handler_context, php_output_context *output_context)
{
php_zlib_context *ctx = *(php_zlib_context **) handler_context;
- int flags = Z_SYNC_FLUSH, status;
+ int flags = Z_SYNC_FLUSH;
PHP_OUTPUT_TSRMLS(output_context);
if (!php_zlib_output_encoding(TSRMLS_C)) {
@@ -180,7 +181,7 @@ int php_zlib_output_handler(void **handler_context, php_output_context *output_c
flags = Z_FULL_FLUSH;
}
- switch ((status = deflate(&ctx->Z, flags))) {
+ switch (deflate(&ctx->Z, flags)) {
case Z_OK:
if (flags == Z_FINISH) {
deflateEnd(&ctx->Z);
@@ -629,7 +630,7 @@ static PHP_INI_MH(OnUpdate_zlib_output_compression)
{
int status, int_value;
char *ini_value;
-
+
if (new_value == NULL) {
return FAILURE;
}