The below path garnered no responses, but seemed useful to me.  Any
feedback to be had?

Thanks,

Barrie

----- Forwarded message from barries <[EMAIL PROTECTED]> -----

Date: Thu, 17 May 2001 15:30:19 -0400
From: barries <[EMAIL PROTECTED]>
User-Agent: Mutt/1.2.5i
To: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
Subject: [PATCH] add Push...Filter, alter Set...Filter

This patch makes Set...Filter replace all configed filters and
introduces Push...Filters to provide the current Set...Filter
functionality.

- Barrie

diff -ur httpd-2.0/include/http_core.h httpd-2.0-f/include/http_core.h
--- httpd-2.0/include/http_core.h       Fri Apr 13 01:19:25 2001
+++ httpd-2.0-f/include/http_core.h     Thu May 17 11:59:23 2001
@@ -464,6 +464,8 @@
 
     apr_array_header_t *output_filters;
     apr_array_header_t *input_filters;
+    int clear_output_filters;
+    int clear_input_filters;
 } core_dir_config;
 
 /* Per-server core configuration */
Only in httpd-2.0-f/server: .core.c.swp
diff -ur httpd-2.0/server/core.c httpd-2.0-f/server/core.c
--- httpd-2.0/server/core.c     Thu May 10 13:27:57 2001
+++ httpd-2.0-f/server/core.c   Thu May 17 14:02:59 2001
@@ -299,9 +299,16 @@
            conf->add_default_charset_name = new->add_default_charset_name;
        }
     }
-    conf->output_filters = apr_array_append(a, base->output_filters, 
-                                             new->output_filters);
-    conf->input_filters = apr_array_append(a, base->input_filters,
+
+    if ( new->clear_output_filters )
+        conf->output_filters = new->output_filters;
+    else
+        conf->output_filters = apr_array_append(a, base->output_filters, 
+                                                 new->output_filters);
+    if ( new->clear_input_filters )
+        conf->input_filters = new->input_filters;
+    else
+        conf->input_filters = apr_array_append(a, base->input_filters,
                                             new->input_filters);
 
     return (void*)conf;
@@ -1887,7 +1894,7 @@
     return NULL;
 }
 
-static const char *add_filter(cmd_parms *cmd, void *dummy, const char *arg)
+static const char *add_output_filter(cmd_parms *cmd, void *dummy, const char *arg)
 {
     core_dir_config *conf = dummy;
     char **newfilter;
@@ -1907,6 +1914,22 @@
     return NULL;
 }
 
+static const char *set_output_filter(cmd_parms *cmd, void *dummy, const char *arg)
+{
+    core_dir_config *conf = dummy;
+    
+    conf->clear_output_filters = 1;
+    return add_output_filter( cmd, dummy, arg ) ;
+}
+
+static const char *set_input_filter(cmd_parms *cmd, void *dummy, const char *arg)
+{
+    core_dir_config *conf = dummy;
+
+    conf->clear_input_filters = 1 ;
+    return add_input_filter( cmd, dummy, arg ) ;
+}
+
 static const char *set_server_string_slot(cmd_parms *cmd, void *dummy,
                                          const char *arg)
 {
@@ -2848,10 +2871,14 @@
  * to leave it just in the conf file.  Other should feel free to disagree
  * with me.  Rbb.
  */
-AP_INIT_ITERATE("SetOutputFilter", add_filter, NULL, ACCESS_CONF,
-   "filters to be run"),
-AP_INIT_ITERATE("SetInputFilter", add_input_filter, NULL, ACCESS_CONF,
-   "filters to be run on the request body"),
+AP_INIT_ITERATE("PushOutputFilter", add_output_filter, NULL, ACCESS_CONF,
+   "additional filters to be run"),
+AP_INIT_ITERATE("PushInputFilter", add_input_filter, NULL, ACCESS_CONF,
+   "additional filters to be run on the request body"),
+AP_INIT_ITERATE("SetOutputFilter", set_output_filter, NULL, ACCESS_CONF,
+   "replace filters to be run"),
+AP_INIT_ITERATE("SetInputFilter", set_input_filter, NULL, ACCESS_CONF,
+   "replace filters to be run on the request body"),
 { NULL }
 };
 

Reply via email to