You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Valentine Sinitsyn <e_...@inbox.ru> on 2004/11/20 20:10:23 UTC
Re[3]: [users@httpd] mod_filter and apache-2.0
>> Yes, I did checkout util-filter.h from CVS along with
NK> That's not at all the same. Let us know if it works, but I wouldn't
NK> be too surprised if it breaks something else in 2.0.
NK> Actually, if it does work, that in itself is a useful thing to know!
No, util-filter.h from MAIN branch does not work. I think Apache 2.1
and 2.0 are not fully source compatible (not surprising thing).
Several days ago I tried to install mod_disk_cache from MAIN and it
also break my Apache 2.0.52
I tried the patch you suggested. Now httpd itself compiled just fine,
but 'apxs -a -c -i mod_filter.c' failed. This was because "enum {...}
dispatch;" was found twice: in util_filter.h (struct ap_filter_rec_t)
and in mod_filter.c itself (in struct ap_filter_provider_t). When I
put this enum alone, named it ap_dispatch_type and modified the
corresponding structs everything ran fine. I was able to start and use
Apache without any segfaults or similar stuff. I also made FilterChain
for mod_deflate to compress only text/* responses. I did see oddness
in module behavior but it is probably because I made
quick-and-dirty setup. From technical point of view, mod_filter ran on
my apache 2.0.52 with no errors.
In case you will be interested in, I'm sending patches for
util_filter.h (merged with yours util-2.0-patch) and mod_filter.c.
Please note that they should be applied with -R flag
util_filter.h.patch:
--- util_filter.h 2004-11-20 23:29:14.982862184 +0000
+++ util_filter.h.orig 2004-02-09 20:54:34.000000000 +0000
@@ -197,16 +197,6 @@
*/
typedef struct ap_filter_rec_t ap_filter_rec_t;
-typedef struct ap_filter_provider_t ap_filter_provider_t;
-
-/** Dispatch criteria for filter providers */
-typedef enum {
- HANDLER,
- REQUEST_HEADERS,
- RESPONSE_HEADERS,
- SUBPROCESS_ENV,
- CONTENT_TYPE
-} ap_dispatch_type;
/**
* This structure is used for recording information about the
@@ -215,13 +205,7 @@
*
* At the moment, these are simply linked in a chain, so a ->next pointer
* is available.
- *
- * It is used for any filter that can be inserted in the filter chain.
- * This may be either a httpd-2.0 filter or a mod_filter harness.
- * In the latter case it contains dispatch, provider and protocol information.
- * In the former case, the new fields (from dispatch) are ignored.
*/
-
struct ap_filter_rec_t {
/** The registered name for this filter */
const char *name;
@@ -241,19 +225,6 @@
/** The next filter_rec in the list */
struct ap_filter_rec_t *next;
-
- ap_dispatch_type dispatch;
-
- /** Match value for filter providers */
- const char* value ;
- /** Providers for this filter */
- ap_filter_provider_t* providers ;
- /** Trace level for this filter */
- int debug ;
- /** Protocol flags for this filter */
- unsigned int proto_flags ;
- /** Save Ranges header if this filter unsets it */
- const char* range ;
};
/**
@@ -537,19 +508,6 @@
...)
__attribute__((format(printf,3,4)));
-/** Filter changes contents (so invalidating checksums/etc) */
-#define AP_FILTER_PROTO_CHANGE 0x1
-/** Filter changes length of contents (so invalidating content-length/etc) */
-#define AP_FILTER_PROTO_CHANGE_LENGTH 0x2
-/** Filter requires complete input and can't work on byteranges */
-#define AP_FILTER_PROTO_NO_BYTERANGE 0x4
-/** Filter should not run in a proxy */
-#define AP_FILTER_PROTO_NO_PROXY 0x8
-/** Filter makes output non-cacheable */
-#define AP_FILTER_PROTO_NO_CACHE 0x10
-/** Filter is incompatible with "Cache-Control: no-transform" */
-#define AP_FILTER_PROTO_TRANSFORM 0x20
-
#ifdef __cplusplus
}
#endif
mod_filter.c.patch:
--- mod_filter.c 2004-11-20 23:30:41.186757200 +0000
+++ mod_filter.c.orig 2004-11-19 15:23:00.000000000 +0000
@@ -77,7 +77,13 @@
ap_filter_provider_t *next;
/** Dispatch criteria for filter providers */
- ap_dispatch_type dispatch;
+ enum {
+ HANDLER,
+ REQUEST_HEADERS,
+ RESPONSE_HEADERS,
+ SUBPROCESS_ENV,
+ CONTENT_TYPE
+ } dispatch;
/** Match value for filter providers */
const char* value;
Regards,
Valentine
---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org
Re[3]: [users@httpd] mod_filter and apache-2.0
Posted by Nick Kew <ni...@webthing.com>.
On Sun, 21 Nov 2004, Valentine Sinitsyn wrote:
> I tried the patch you suggested. Now httpd itself compiled just fine,
> but 'apxs -a -c -i mod_filter.c' failed. This was because "enum {...}
> dispatch;" was found twice: in util_filter.h (struct ap_filter_rec_t)
> and in mod_filter.c itself (in struct ap_filter_provider_t).
Thanks, that's useful. It tells me I've failed to keep the util_filter
patch in sync with mod_filter updates. I'll try and xreference it to
current source once I've figured out the switch of my local apache
source tree from cvs to svn.
> In case you will be interested in, I'm sending patches for
> util_filter.h (merged with yours util-2.0-patch) and mod_filter.c.
> Please note that they should be applied with -R flag
Right. I'll just add that to the page for now.
--
Nick Kew
---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org