From 6a86b6fad50cc940e6e66bfe307b54aa03087ee6 Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Mon, 13 Nov 2000 19:05:25 +0000 Subject: [PATCH] Handle unable-to-add-new-headers error nicely --- ext/zlib/zlib.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index f70a911624..3b706449f6 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -1071,11 +1071,6 @@ int php_deflate_string(const char *str, uint str_length, char **newstr, uint *ne return FAILURE; } - /* - sapi_add_header("Content-Encoding: gzip", sizeof("Content-Encoding: gzip") - 1, 1); - sapi_send_headers(); - */ - /* Write a very simple .gz header: */ sprintf(header_buffer, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1], Z_DEFLATED, 0 /*flags*/, @@ -1087,9 +1082,6 @@ int php_deflate_string(const char *str, uint str_length, char **newstr, uint *ne /* TODO: print out error */ return FAILURE; } - /* - sapi_add_header("Content-Encoding: deflate", sizeof("Content-Encoding: deflate") - 1, 1); - */ break; } @@ -1167,6 +1159,7 @@ PHP_FUNCTION(ob_gzhandler) int coding; zval **zv_string; zval **data, **a_encoding; + zend_bool return_original=0; if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &zv_string)==FAILURE) { ZEND_WRONG_PARAM_COUNT(); @@ -1192,13 +1185,27 @@ PHP_FUNCTION(ob_gzhandler) Z_TYPE_P(return_value) = IS_STRING; switch (coding) { case CODING_GZIP: - sapi_add_header("Content-Encoding: gzip", sizeof("Content-Encoding: gzip") - 1, 1); + if (sapi_add_header("Content-Encoding: gzip", sizeof("Content-Encoding: gzip") - 1, 1)==FAILURE) { + return_original = 1; + } break; case CODING_DEFLATE: - sapi_add_header("Content-Encoding: deflate", sizeof("Content-Encoding: deflate") - 1, 1); + if (sapi_add_header("Content-Encoding: deflate", sizeof("Content-Encoding: deflate") - 1, 1)==FAILURE) { + return_original = 1; + } + break; + default: + return_original = 1; break; } + if (return_original) { + zval_dtor(return_value); + } } else { + return_original = 1; + } + + if (return_original) { /* return the original string */ *return_value = **zv_string; zval_copy_ctor(return_value); -- 2.40.0