Right now we have a nice utility function:
ap_cache_cacheable_hdrs_out()
Make a copy of the headers, and remove from
the copy any hop-by-hop headers, as defined in Section
13.5.1 of RFC 2616
(in cache_util.c, part of mod_cache.h public headers) which we can
apply to both the in and outbound headers.
Now as far as I can see -every- caching module will have to take care
of the error headers and the content -- and filtering both in-and-out
that way.
So how about changing this to:
- ap_cache_cacheable_hdrs_out(r);
calls ap_cache_cacheable_hdrs
AND
Set Content-Type if not set
AND
overlays r->err_headers_out
- ap_cache_cacheable_hdrs_in(r);
calles ap_cache_cacheable_hdrs
- ap_cache_cacheable_hdrs(pool, headers, server) (private)
delete/cleanse as per RFC 2616
and as per CacheIgnoreHeaders
Or is there a fundamental reason as to why some caches will not want
to do the 'usual'* ?
Thoughts ?
Dw
if (r->headers_out) {
/* Table with just the cachable headers */
headers_out = ap_cache_cacheable_hdrs_out(
r->pool, r->headers_out, r-
>server);
/* If not set in headers_out, set Content-Type */
if (!apr_table_get(headers_out, "Content-Type")
&& r->content_type) {
apr_table_setn(headers_out, "Content-Type",
ap_make_content_type(r, r-
>content_type));
}
headers_out = apr_table_overlay(r->pool, headers_out,
r->err_headers_out);
}
if (r->headers_in) {
apr_table_t *headers_in;
headers_in = ap_cache_cacheable_hdrs_out(r->pool, r-
>headers_in, r->server);
};