diff options
author | Zeev Suraski <zeev@php.net> | 2002-08-23 08:36:28 +0000 |
---|---|---|
committer | Zeev Suraski <zeev@php.net> | 2002-08-23 08:36:28 +0000 |
commit | 71e7ee097f9a2d78e15c421d5392d88cb77a50fe (patch) | |
tree | 5ceb11fb0edc5d51de752679836af04dec12970c | |
parent | 273a2bf38a4c850cd78422ac502e236a8af08ad0 (diff) | |
download | php-git-71e7ee097f9a2d78e15c421d5392d88cb77a50fe.tar.gz |
Fix ob_gzhandler()'s handling of requests without compression, but that do
have an Accept-Encoding header
-rw-r--r-- | ext/zlib/zlib.c | 6 | ||||
-rw-r--r-- | main/output.c | 8 |
2 files changed, 7 insertions, 7 deletions
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index fdb54ca76e..e16af37384 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -1247,11 +1247,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))) { @@ -1259,6 +1256,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 fcc70e6954..2d96b40473 100644 --- a/main/output.c +++ b/main/output.c @@ -175,9 +175,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); |