Skip to content

Commit cbc52df

Browse files
committed
Possible way to deprecate dechunk filter
Calls through the dechunk factory show the deprecation warning, but we expose chunked_filter_create and that is called directly in http_fopen_wrapper.c, so that it doesn't show the deprecation warning.
1 parent 52cc923 commit cbc52df

3 files changed

Lines changed: 15 additions & 3 deletions

File tree

ext/standard/filters.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1983,7 +1983,7 @@ static const php_stream_filter_ops chunked_filter_ops = {
19831983
"dechunk"
19841984
};
19851985

1986-
static php_stream_filter *chunked_filter_create(const char *filtername, zval *filterparams, bool persistent)
1986+
PHPAPI php_stream_filter *chunked_filter_create(const char *filtername, zval *filterparams, bool persistent)
19871987
{
19881988
const php_stream_filter_ops *fops = NULL;
19891989
php_chunked_filter_data *data;
@@ -2002,8 +2002,18 @@ static php_stream_filter *chunked_filter_create(const char *filtername, zval *fi
20022002
return php_stream_filter_alloc(fops, data, persistent, PSFS_SEEKABLE_START, PSFS_SEEKABLE_ALWAYS);
20032003
}
20042004

2005+
static php_stream_filter *chunked_filter_create_deprecated(const char *filtername, zval *filterparams, bool persistent)
2006+
{
2007+
if (strcasecmp(filtername, "dechunk")) {
2008+
return NULL;
2009+
}
2010+
2011+
php_error_docref(NULL, E_DEPRECATED, "The \"dechunk\" stream filter is deprecated");
2012+
return chunked_filter_create(filtername, filterparams, persistent);
2013+
}
2014+
20052015
static const php_stream_filter_factory chunked_filter_factory = {
2006-
chunked_filter_create
2016+
chunked_filter_create_deprecated
20072017
};
20082018
/* }}} */
20092019

ext/standard/http_fopen_wrapper.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ static zend_string *php_stream_http_response_headers_parse(php_stream_wrapper *w
330330
/* Prevent a memory leak in case there are more transfer-encoding headers. */
331331
php_stream_filter_free(header_info->transfer_encoding);
332332
}
333-
header_info->transfer_encoding = php_stream_filter_create(
333+
header_info->transfer_encoding = chunked_filter_create(
334334
"dechunk", NULL, php_stream_is_persistent(stream));
335335
if (header_info->transfer_encoding != NULL) {
336336
/* Do not store transfer-encoding header. */

ext/standard/php_standard.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,5 @@
4747
#define phpext_standard_ptr basic_functions_module_ptr
4848
PHP_MINIT_FUNCTION(standard_filters);
4949
PHP_MSHUTDOWN_FUNCTION(standard_filters);
50+
51+
PHPAPI php_stream_filter *chunked_filter_create(const char *filtername, zval *filterparams, bool persistent);

0 commit comments

Comments
 (0)