summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2002-08-23 08:37:35 +0000
committerZeev Suraski <zeev@php.net>2002-08-23 08:37:35 +0000
commita6e8e723728a1b8976e9a24e77abe3e0b3e6c294 (patch)
treee64eaeb7725380f2230b8d0fe849e90cc31d839c
parent03b1204a8a9adb725998d5e77e7074866dca12bc (diff)
downloadphp-git-a6e8e723728a1b8976e9a24e77abe3e0b3e6c294.tar.gz
Fix ob_gzhandler()'s handling of requests w/o compression but that do have
the Accept-Encoding header
-rw-r--r--ext/zlib/zlib.c6
-rw-r--r--main/output.c8
2 files changed, 7 insertions, 7 deletions
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 312178e180..2c52b9a039 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -905,11 +905,8 @@ PHP_FUNCTION(ob_gzhandler)
|| zend_hash_find(&EG(symbol_table), "HTTP_SERVER_VARS", sizeof("HTTP_SERVER_VARS"), (void **) &data)==FAILURE
|| Z_TYPE_PP(data)!=IS_ARRAY
|| zend_hash_find(Z_ARRVAL_PP(data), "HTTP_ACCEPT_ENCODING", sizeof("HTTP_ACCEPT_ENCODING"), (void **) &a_encoding)==FAILURE) {
- /* return the original string */
- *return_value = **zv_string;
- zval_copy_ctor(return_value);
ZLIBG(ob_gzhandler_status)=-1;
- return;
+ RETURN_FALSE;
}
convert_to_string_ex(a_encoding);
if (php_memnstr(Z_STRVAL_PP(a_encoding), "gzip", 4, Z_STRVAL_PP(a_encoding) + Z_STRLEN_PP(a_encoding))) {
@@ -917,6 +914,7 @@ PHP_FUNCTION(ob_gzhandler)
} else if(php_memnstr(Z_STRVAL_PP(a_encoding), "deflate", 7, Z_STRVAL_PP(a_encoding) + Z_STRLEN_PP(a_encoding))) {
coding = CODING_DEFLATE;
} else {
+ ZLIBG(ob_gzhandler_status)=-1;
RETURN_FALSE;
}
diff --git a/main/output.c b/main/output.c
index 291f6722d5..886761cda2 100644
--- a/main/output.c
+++ b/main/output.c
@@ -247,9 +247,11 @@ PHPAPI void php_end_ob_buffer(zend_bool send_buffer, zend_bool just_flush TSRMLS
params[1] = &z_status;
OG(ob_lock) = 1;
if (call_user_function_ex(CG(function_table), NULL, OG(active_ob_buffer).output_handler, &alternate_buffer, 2, params, 1, NULL TSRMLS_CC)==SUCCESS) {
- convert_to_string_ex(&alternate_buffer);
- final_buffer = Z_STRVAL_P(alternate_buffer);
- final_buffer_length = Z_STRLEN_P(alternate_buffer);
+ if (!(Z_TYPE_P(alternate_buffer)==IS_BOOL && Z_BVAL_P(alternate_buffer)==0)) {
+ convert_to_string_ex(&alternate_buffer);
+ final_buffer = Z_STRVAL_P(alternate_buffer);
+ final_buffer_length = Z_STRLEN_P(alternate_buffer);
+ }
}
OG(ob_lock) = 0;
zval_ptr_dtor(&OG(active_ob_buffer).output_handler);