]> granicus.if.org Git - php/commitdiff
@ - If possible set Content-Length header in zlib.output_compression mode. (thies)
authorThies C. Arntzen <thies@php.net>
Sat, 27 Apr 2002 17:03:32 +0000 (17:03 +0000)
committerThies C. Arntzen <thies@php.net>
Sat, 27 Apr 2002 17:03:32 +0000 (17:03 +0000)
ext/zlib/zlib.c

index fbfd5820e322dfff2b3e7d9f4fc9aca5520ca888..bbc8672ec0fc9fee62cdde78a5e19a0f0ac09ffc 100644 (file)
@@ -955,6 +955,13 @@ static void php_gzip_output_handler(char *output, uint output_len, char **handle
        do_end = (mode & PHP_OUTPUT_HANDLER_END ? 1 : 0);
        if (php_deflate_string(output, output_len, handled_output, handled_output_len, ZLIBG(ob_gzip_coding), do_start, do_end, ZLIBG(output_compression_level) TSRMLS_CC)!=SUCCESS) {
                zend_error(E_ERROR, "Compression failed");
+       } else {
+               if (do_start && do_end) {
+                       char lenbuf[64];
+
+                       sprintf(lenbuf,"Content-Length: %d", *handled_output_len);
+                       sapi_add_header(lenbuf,strlen(lenbuf), 1);
+               }
        }
 }
 /* }}} */
@@ -984,7 +991,7 @@ int php_enable_output_compression(int buffer_size TSRMLS_DC)
        } else {
                return FAILURE;
        }
-       
+
        php_start_ob_buffer(NULL, buffer_size, 0 TSRMLS_CC);
        php_ob_set_internal_handler(php_gzip_output_handler, buffer_size*1.5, "zlib output compression", 0 TSRMLS_CC);
        return SUCCESS;