X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_encoding_api.c;h=d1ce3da984441d1a839590c642aa6ed68c9433ed;hb=aa931f5b858c3d8513e883ae913f0704557ca540;hp=87a4b175ceae4225d881a5acf654a2b0070a47a1;hpb=6be753a288ed7a42e0cd19551d85eb8eb14c4566;p=m6w6%2Fext-http diff --git a/http_encoding_api.c b/http_encoding_api.c index 87a4b17..d1ce3da 100644 --- a/http_encoding_api.c +++ b/http_encoding_api.c @@ -151,13 +151,13 @@ inline void http_init_uncompress_buffer(size_t data_len, char **buf_ptr, size_t *buf_ptr = emalloc(*buf_len + 1); } else { size_t new_len = *buf_len << 2; - char *new_ptr = erealloc(*buf_ptr, new_len + 1); + char *new_ptr = erealloc_recoverable(*buf_ptr, new_len + 1); if (new_ptr) { *buf_ptr = new_ptr; *buf_len = new_len; } else { - *iteration = INT_MAX; + *iteration = INT_MAX-1; /* avoid integer overflow on increment op */ } } } @@ -592,6 +592,7 @@ PHP_HTTP_API zend_bool _http_encoding_response_start(size_t content_length TSRML } } else { #ifndef HTTP_HAVE_ZLIB + HTTP_G(send).gzip_encoding = 0; php_start_ob_buffer_named("ob_gzhandler", 0, 0 TSRMLS_CC); #else HashTable *selected; @@ -602,6 +603,8 @@ PHP_HTTP_API zend_bool _http_encoding_response_start(size_t content_length TSRML add_next_index_stringl(&zsupported, "gzip", lenof("gzip"), 1); add_next_index_stringl(&zsupported, "deflate", lenof("deflate"), 1); + HTTP_G(send).gzip_encoding = 0; + if (selected = http_negotiate_encoding(&zsupported)) { STATUS hs = FAILURE; char *encoding = NULL; @@ -619,8 +622,6 @@ PHP_HTTP_API zend_bool _http_encoding_response_start(size_t content_length TSRML } if (SUCCESS == hs) { http_send_header_string("Vary: Accept-Encoding"); - } else { - HTTP_G(send).gzip_encoding = 0; } } @@ -629,7 +630,7 @@ PHP_HTTP_API zend_bool _http_encoding_response_start(size_t content_length TSRML } zval_dtor(&zsupported); - return 1; + return HTTP_G(send).gzip_encoding; #endif } }