X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_encoding_api.c;h=0de420a81a89fbf41fdfd744e937dc598afc916b;hb=3d3fa591d770c2b046ff8f51e85bd8dafc1dfa56;hp=1975295c00e5a36056473f4c65cf96964f66fa8c;hpb=13e641e4455b1f86520de7c6390b2b7659d65e54;p=m6w6%2Fext-http diff --git a/http_encoding_api.c b/http_encoding_api.c index 1975295..0de420a 100644 --- a/http_encoding_api.c +++ b/http_encoding_api.c @@ -160,11 +160,12 @@ PHP_HTTP_API const char *_http_encoding_dechunk(const char *encoded, size_t enco /* {{{ int http_encoding_response_start(size_t) */ PHP_HTTP_API int _http_encoding_response_start(size_t content_length TSRMLS_DC) { - if ( php_ob_handler_used("ob_gzhandler" TSRMLS_CC) || - php_ob_handler_used("zlib output compression" TSRMLS_CC)) { - HTTP_G->send.deflate.encoding = 0; - } else if (HTTP_G->send.deflate.encoding) { - HTTP_G->send.deflate.encoding = 0; + int is_http = HTTP_G->send.deflate.encoding; + int is_zlib = php_ob_handler_used("ob_gzhandler" TSRMLS_CC) || php_ob_handler_used("zlib output compression" TSRMLS_CC); + + HTTP_G->send.deflate.encoding = 0; + + if (is_http && !is_zlib) { #ifdef HTTP_HAVE_ZLIB HashTable *selected; zval zsupported; @@ -203,16 +204,14 @@ PHP_HTTP_API int _http_encoding_response_start(size_t content_length TSRMLS_DC) #else php_start_ob_buffer_named("ob_gzhandler", 0, 0 TSRMLS_CC); #endif /* HTTP_HAVE_ZLIB */ - } else { - HTTP_G->send.deflate.encoding = 0; - if (content_length) { - /* emit a content-length header */ - char cl_header_str[128]; - size_t cl_header_len; - cl_header_len = snprintf(cl_header_str, lenof(cl_header_str), "Content-Length: %zu", content_length); - http_send_header_string_ex(cl_header_str, cl_header_len, 1); - } + } else if (content_length && !is_zlib) { + /* emit a content-length header */ + char cl_header_str[128]; + size_t cl_header_len; + cl_header_len = snprintf(cl_header_str, lenof(cl_header_str), "Content-Length: %zu", content_length); + http_send_header_string_ex(cl_header_str, cl_header_len, 1); } + return HTTP_G->send.deflate.encoding; } /* }}} */