X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_filter_api.c;h=4b54998a31c3019a9b2d15d15c5bebf3dfff46b1;hp=648c509adff7d66177a9f07bed22b04704796156;hb=bf87f6e654235acb023ca052a5e71faeb2635a3f;hpb=f559a71c841e00ef7ca30bace5419c1a6bebca3f diff --git a/http_filter_api.c b/http_filter_api.c index 648c509..4b54998 100644 --- a/http_filter_api.c +++ b/http_filter_api.c @@ -381,6 +381,7 @@ static HTTP_FILTER_OPS(deflate) = { static php_stream_filter *http_filter_create(const char *name, zval *params, int p TSRMLS_DC) { + zval **tmp = ¶ms; php_stream_filter *f = NULL; if (!strcasecmp(name, "http.chunked_decode")) { @@ -407,6 +408,20 @@ static php_stream_filter *http_filter_create(const char *name, zval *params, int if (p) { b->flags |= HTTP_ENCODING_STREAM_PERSISTENT; } + if (params) { + switch (Z_TYPE_P(params)) + { + case IS_ARRAY: + case IS_OBJECT: + if (SUCCESS != zend_hash_find(HASH_OF(params), "zlib", sizeof("zlib"), (void **) &tmp)) { + break; + } + default: + if (zval_is_true(*tmp)) { + b->flags |= HTTP_ENCODING_STREAM_ZLIB_HEADER; + } + } + } if (!(f = php_stream_filter_alloc(&HTTP_FILTER_OP(gzencode), b, p))) { pefree(b, p); } @@ -420,6 +435,20 @@ static php_stream_filter *http_filter_create(const char *name, zval *params, int if (p) { b->flags |= HTTP_ENCODING_STREAM_PERSISTENT; } + if (params) { + switch (Z_TYPE_P(params)) + { + case IS_ARRAY: + case IS_OBJECT: + if (SUCCESS != zend_hash_find(HASH_OF(params), "zlib", sizeof("zlib"), (void **) &tmp)) { + break; + } + default: + if (zval_is_true(*tmp)) { + b->flags |= HTTP_ENCODING_STREAM_ZLIB_HEADER; + } + } + } if (!(f = php_stream_filter_alloc(&HTTP_FILTER_OP(deflate), b, p))) { pefree(b, p); }