php7/php5-apache2-filters.diff
2025-02-05 21:23:16 +00:00

75 lines
2.3 KiB
Diff

--- php-7.0.1/sapi/apache2handler/php_functions.c.apache2-filters.droplet 2015-12-16 11:41:55.000000000 +0100
+++ php-7.0.1/sapi/apache2handler/php_functions.c 2015-12-29 00:12:07.202603653 +0100
@@ -216,6 +216,63 @@ PHP_FUNCTION(apache_response_headers)
}
/* }}} */
+/* {{{ proto array apache_get_output_filters()
+ Get All Active Output filters */
+PHP_FUNCTION(apache_get_output_filters)
+{
+ ap_filter_t* ff;
+ php_struct *ctx;
+
+ if (ZEND_NUM_ARGS() != 0) {
+ WRONG_PARAM_COUNT;
+ }
+
+ if(array_init(return_value) != SUCCESS)
+ {
+ RETURN_NULL();
+ }
+
+ ctx = SG(server_context);
+
+ ff = ctx->r->output_filters;
+
+ do {
+ add_next_index_string(return_value, ff->frec->name);
+ ff = ff->next ;
+ } while (ff);
+
+}
+/* }}} */
+
+/* {{{ proto bool apache_add_output_filter(string filter_name)
+ Add an output filter to this request */
+PHP_FUNCTION(apache_add_output_filter)
+{
+ php_struct *ctx;
+ int arg_count = ZEND_NUM_ARGS();
+ char *filter_name;
+ ap_filter_rec_t* ap_filter;
+
+ if (arg_count != 1 ||
+ zend_parse_parameters(arg_count TSRMLS_CC, "s", &filter_name) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ ctx = SG(server_context);
+
+ ap_filter = ap_get_output_filter_handle(filter_name);
+
+ /* requested output filter was not found */
+ if(ap_filter == NULL) {
+ RETURN_FALSE;
+ }
+ else {
+ ap_add_output_filter_handle(ap_filter, NULL, ctx->r, ctx->r->connection);
+ RETURN_TRUE;
+ }
+}
+/* }}} */
+
/* {{{ proto string apache_note(string note_name [, string note_value])
Get and set Apache request notes */
PHP_FUNCTION(apache_note)
@@ -520,6 +579,8 @@ ZEND_END_ARG_INFO()
static const zend_function_entry apache_functions[] = {
PHP_FE(apache_lookup_uri, arginfo_apache2handler_lookup_uri)
PHP_FE(virtual, arginfo_apache2handler_virtual)
+ PHP_FE(apache_get_output_filters, NULL)
+ PHP_FE(apache_add_output_filter, NULL)
PHP_FE(apache_request_headers, arginfo_apache2handler_getallheaders)
PHP_FE(apache_response_headers, arginfo_apache2handler_response_headers)
PHP_FE(apache_setenv, arginfo_apache2handler_setenv)