Has anybody seen --enable-disk-cache or --enable-mem-cache work under
apache 2? In my scenario:
--enable-maintainer-mode --with-mpm=prefork --enable-rewrite
--enable-expires --enable-speling --disable-auth --enable-headers
--enable-info --disable-userdir --enable-dav --enable-proxy
--enable-proxy-connect --enable-proxy-ftp --enable-proxy-http
--enable-file-cache --enable-cache --enable-disk-cache
--enable-mem-cache --no-create --no-recursion
--prefix=/usr/local/apache-2-clean
the cache context's filename is copied to r->filename
cache_url_handler (modules/experimental/mod_cache.c:192)
cache_read_entity_headers (modules/experimental/mod_cache.c:192)
cache_select_url which (modules/experimental/mod_cache.c:287)
r->filename = apr_pstrdup(r->pool, info->filename );
before the content_set filter sets it.
cache_in_filter (modules/experimental/mod_cache.c:732)
info->filename = apr_pstrdup(r->pool, r->filename );
Can someone who has this working set breakpoints at cache_url_handler
and cache_in_filter and let me know if they see the same behavior?
The two are registered with
ap_hook_quick_handler(cache_url_handler, NULL, NULL, APR_HOOK_FIRST);
and
ap_register_output_filter("CACHE_IN",
cache_in_filter,
NULL,
AP_FTYPE_CONTENT_SET);
"CACHE_IN" is added to the request several places in cache_url_handler (a
bit too late) and in cache_conditional_filter, which is also added to the
request in cache_url_handler. From this it appears that the info->filename
will _always_ be copied to r->filename before it has been initialized.
If you are replicating this problem, you will probably need to created
the disk cache directory /usr/local/apache-2-clean/proxy (in this case).
Otherwise, the cache is never written and so never read and so the code
path never arises.
Since this is a cache re-use issue, you'll have to GET something twice
through the proxy in rapid enough succession that the cached copy
doesn't go stale.
For now, I just cheesed around it with
+++ modules/experimental/mod_cache.c:287
+ if (info->filename)
r->filename = apr_pstrdup(r->pool, info->filename );
but never having seen it work, I don't know what the intended path is.
--
-eric
([EMAIL PROTECTED])
Feel free to forward this message to any list for any purpose other than
email address distribution.