]> granicus.if.org Git - php/commitdiff
fixed bug #61820
authorMichael Wallner <mike@php.net>
Tue, 24 Apr 2012 17:50:00 +0000 (19:50 +0200)
committerMichael Wallner <mike@php.net>
Tue, 24 Apr 2012 17:50:00 +0000 (19:50 +0200)
using ob_gzhandler will complain about headers already sent
when no compression

the Vary header should only be sent on the PHP_OUTPUT_HANDLER_START
event

ext/zlib/tests/bug61820.phpt [new file with mode: 0644]
ext/zlib/zlib.c

diff --git a/ext/zlib/tests/bug61820.phpt b/ext/zlib/tests/bug61820.phpt
new file mode 100644 (file)
index 0000000..6f33b54
--- /dev/null
@@ -0,0 +1,23 @@
+--TEST--
+bug #61820 using ob_gzhandler will complain about headers already sent when no compression
+--SKIPIF--
+<?php
+extension_loaded("zlib") or die("skip");
+?>
+--FILE--
+<?php
+ob_start('ob_gzhandler');
+
+echo "Hi there.\n";
+ob_flush();
+flush();
+
+echo "This is confusing...\n";
+ob_flush();
+flush();
+?>
+DONE
+--EXPECT--
+Hi there.
+This is confusing...
+DONE
index d472573b79e99b2f24073924d8813ffb7ca7f5f1..545979dc9cf60a63ee286237d2d498179fccca38 100644 (file)
@@ -187,7 +187,9 @@ static int php_zlib_output_handler(void **handler_context, php_output_context *o
                        -Vary: $ HTTP_ACCEPT_ENCODING=gzip ./sapi/cgi/php <<<'<?php ob_start("ob_gzhandler"); echo "foo\n"; ob_end_clean();'
                        -Vary: $ HTTP_ACCEPT_ENCODING= ./sapi/cgi/php <<<'<?php ob_start("ob_gzhandler"); echo "foo\n"; ob_end_clean();'
                */
-               if (output_context->op != (PHP_OUTPUT_HANDLER_START|PHP_OUTPUT_HANDLER_CLEAN|PHP_OUTPUT_HANDLER_FINAL)) {
+               if ((output_context->op & PHP_OUTPUT_HANDLER_START)
+               &&      (output_context->op != (PHP_OUTPUT_HANDLER_START|PHP_OUTPUT_HANDLER_CLEAN|PHP_OUTPUT_HANDLER_FINAL))
+               ) {
                        sapi_add_header_ex(ZEND_STRL("Vary: Accept-Encoding"), 1, 1 TSRMLS_CC);
                }
                return FAILURE;