summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Roehrich <sr@php.net>2003-08-24 13:59:34 +0000
committerStefan Roehrich <sr@php.net>2003-08-24 13:59:34 +0000
commitaa632187cd869dad09369f0b3200a1b75c8fe26e (patch)
tree6857194bfcf75aafdb56d8f7b96d9abcbc13593b
parent8828e17a4461653ddd0d667c0598292b5ef5f8df (diff)
downloadphp-git-aa632187cd869dad09369f0b3200a1b75c8fe26e.tar.gz
Fixed bug #25218 ("deflate" compressed pages had a gzip header, which
should only be sent with "gzip" compressed pages).
-rw-r--r--NEWS1
-rw-r--r--ext/zlib/zlib.c8
2 files changed, 5 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index c59aa88575..a3deb63ac5 100644
--- a/NEWS
+++ b/NEWS
@@ -44,6 +44,7 @@ PHP NEWS
- Fixed bug #19859 (allow fast_call_user_function to support __call).
(Stanislav)
- Fixed bug #17988 (strtotime failed to parse postgresql timestamp). (Derick)
+- Fixed bug #25218 ("deflate" compressed pages had a gzip header). (Stefan)
29 Jun 2003, PHP 5 Beta 1
- Removed the bundled MySQL client library. (Sterling)
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 752601414e..e700270cb2 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -702,7 +702,7 @@ static int php_do_deflate(uint str_length, Bytef **p_buffer, uint *p_buffer_len,
Bytef *buffer;
uInt prev_outlen, outlen;
int err;
- int start_offset = (do_start ? 10 : 0);
+ int start_offset = ((do_start && ZLIBG(compression_coding) == CODING_GZIP) ? 10 : 0);
int end_offset = (do_end ? 8 : 0);
outlen = (uint) (sizeof(char) * (str_length * 1.001f + 12) + 1); /* leave some room for a trailing \0 */
@@ -776,14 +776,14 @@ static int php_deflate_string(const char *str, uint str_length, char **newstr, u
ZLIBG(stream).next_in = (Bytef *) str;
ZLIBG(stream).avail_in = (uInt) str_length;
- if (ZLIBG(compression_coding) == 1) {
+ if (ZLIBG(compression_coding) == CODING_GZIP) {
ZLIBG(crc) = crc32(ZLIBG(crc), (const Bytef *) str, str_length);
}
err = php_do_deflate(str_length, (Bytef **) newstr, new_length, do_start, do_end TSRMLS_CC);
/* TODO: error handling (err may be Z_STREAM_ERROR, Z_BUF_ERROR, ?) */
- if (do_start) {
+ if (do_start && ZLIBG(compression_coding) == CODING_GZIP) {
/* Write a very simple .gz header: */
(*newstr)[0] = gz_magic[0];
(*newstr)[1] = gz_magic[1];
@@ -793,7 +793,7 @@ static int php_deflate_string(const char *str, uint str_length, char **newstr, u
*new_length += 10;
}
if (do_end) {
- if (ZLIBG(compression_coding) == 1) {
+ if (ZLIBG(compression_coding) == CODING_GZIP) {
char *trailer = (*newstr) + (*new_length);
/* write crc & stream.total_in in LSB order */