]> granicus.if.org Git - php/commitdiff
Fix ob_gzhandler()'s handling of requests w/o compression but that do have
authorZeev Suraski <zeev@php.net>
Fri, 23 Aug 2002 08:37:35 +0000 (08:37 +0000)
committerZeev Suraski <zeev@php.net>
Fri, 23 Aug 2002 08:37:35 +0000 (08:37 +0000)
the Accept-Encoding header

ext/zlib/zlib.c
main/output.c

index 312178e18080c63fdca11136189e8979b17d8fd6..2c52b9a03947deb738ad297484aa1c4076479493 100644 (file)
@@ -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;
        }
        
index 291f6722d532318f378f363a7706f5618a47eef2..886761cda2319ab95904c5b3c8925c9e211f7726 100644 (file)
@@ -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);