Hi - I am not too familiar with the OLD_WRITE filter, but I have run into an interesting situation. I want to ensure that my filter is before any of the FTYPE_CONTENT filters. The only way to do this is to make mine FTYPE_CONTENT-1. However, OLD_WRITE assumes (since it is set as FTYPE_CONTENT-1) that it is the first filter in output_filters (and then assumes that in fact it is the first one without checking).
Maybe OLD_WRITE should be set to 0 (or AP_FTYPE_FIRST or something) so you can have more fine grained filter ordering. Here is a patch that implements that (and also gets rid of an assumption in buffer_output). As I said, not sure if this is the right fix, any suggestions (MAYBE an FTYPE_FIRST instead of FTYPE_CONTENT-1)? thanks sterling Index: server/core.c =================================================================== RCS file: /home/cvspublic/httpd-2.0/server/core.c,v retrieving revision 1.88 diff -u -r1.88 core.c --- server/core.c 2001/11/08 14:29:36 1.88 +++ server/core.c 2001/11/15 00:46:12 @@ -3301,7 +3301,7 @@ ap_register_output_filter("SUBREQ_CORE", ap_sub_req_output_filter, AP_FTYPE_CONTENT); ap_old_write_func = ap_register_output_filter("OLD_WRITE", - ap_old_write_filter, AP_FTYPE_CONTENT - 1); + ap_old_write_filter, 0); } AP_DECLARE_DATA module core_module = { Index: server/protocol.c =================================================================== RCS file: /home/cvspublic/httpd-2.0/server/protocol.c,v retrieving revision 1.51 diff -u -r1.51 protocol.c --- server/protocol.c 2001/11/07 05:41:22 1.51 +++ server/protocol.c 2001/11/15 00:46:12 @@ -1069,8 +1069,8 @@ if (f == NULL) { /* our filter hasn't been added yet */ ctx = apr_pcalloc(r->pool, sizeof(*ctx)); - ap_add_output_filter("OLD_WRITE", ctx, r, r->connection); - f = r->output_filters; + f = ap_add_output_filter("OLD_WRITE", ctx, r, r->connection); + AP_DEBUG_ASSERT(f); } /* if the first filter is not our buffering filter, then we have to