com php-src: fix bug #65391: NEWS ext/zlib/tests/bug65391.phpt ext/zlib/zlib.c
| From: | Michael Wallner | Date: | Fri, 09 Aug 2013 09:14:04 +0000 |
| Subject: | com php-src: fix bug #65391: NEWS ext/zlib/tests/bug65391.phpt ext/zlib/zlib.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-72867@lists.php.net to get a copy of this message | ||
Commit: ac28283beb58b367ef1f842b5ee0d6397eb4b516
Author: Michael Wallner <mike@php.net> Fri, 9 Aug 2013 11:14:04 +0200
Parents: fc7fe62e3bef50c6c56e30b9a48227f6a4203523
Branches: PHP-5.4
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ac28283beb58b367ef1f842b5ee0d6397eb4b516
Log:
fix bug #65391
Unable to send vary header user-agent when
ob_start('ob_gzhandler') is called
Bugs:
https://bugs.php.net/65391
Changed paths:
M NEWS
A ext/zlib/tests/bug65391.phpt
M ext/zlib/zlib.c
Diff:
diff --git a/NEWS b/NEWS
index 1b91fc7..76ec38e 100644
--- a/NEWS
+++ b/NEWS
@@ -36,6 +36,10 @@ PHP NEWS
. Fixed bug #62978 (Disallow possible SQL injections with pg_select()/pg_update()
/pg_delete()/pg_insert()). (Yasuo)
+- Zlib:
+ . Fixed bug #65391 (Unable to send vary header user-agent when
+ ob_start('ob_gzhandler') is called) (Mike)
+
?? ??? 2013, PHP 5.4.18
- Core:
diff --git a/ext/zlib/tests/bug65391.phpt b/ext/zlib/tests/bug65391.phpt
new file mode 100644
index 0000000..3ba5350
--- /dev/null
+++ b/ext/zlib/tests/bug65391.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Bug #65391 (Unable to send vary header user-agent when ob_start('ob_gzhandler') is
called)
+--SKIPIF--
+<?php
+extension_loaded("zlib") or die("skip need zlib");
+?>
+--GET--
+dummy=1
+--FILE--
+<?php
+header("Vary: Cookie");
+ob_start("ob_gzhandler");
+
+// run-tests cannot test for a multiple Vary header
+ob_flush();
+print_r(headers_list());
+
+?>
+Done
+--EXPECTF--
+Array
+(
+ [0] => X-Powered-By: PHP/%s
+ [1] => Vary: Cookie
+ [2] => Vary: Accept-Encoding
+)
+Done
+
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 1a202e3..1114bc8 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -190,7 +190,7 @@ static int php_zlib_output_handler(void **handler_context, php_output_context *o
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);
+ sapi_add_header_ex(ZEND_STRL("Vary: Accept-Encoding"), 1, 0 TSRMLS_CC);
}
return FAILURE;
}
@@ -220,7 +220,7 @@ static int php_zlib_output_handler(void **handler_context, php_output_context *o
deflateEnd(&ctx->Z);
return FAILURE;
}
- sapi_add_header_ex(ZEND_STRL("Vary: Accept-Encoding"), 1, 1 TSRMLS_CC);
+ sapi_add_header_ex(ZEND_STRL("Vary: Accept-Encoding"), 1, 0 TSRMLS_CC);
php_output_handler_hook(PHP_OUTPUT_HANDLER_HOOK_IMMUTABLE, NULL TSRMLS_CC);
}
}
@@ -478,7 +478,7 @@ static PHP_FUNCTION(ob_gzhandler)
sapi_add_header_ex(ZEND_STRL("Content-Encoding: deflate"), 1, 1 TSRMLS_CC);
break;
}
- sapi_add_header_ex(ZEND_STRL("Vary: Accept-Encoding"), 1, 1 TSRMLS_CC);
+ sapi_add_header_ex(ZEND_STRL("Vary: Accept-Encoding"), 1, 0 TSRMLS_CC);
}
if (!ZLIBG(ob_gzhandler)) {