From d8fc5d96a8ffe461d137db7df79d407e35103679 Mon Sep 17 00:00:00 2001 From: Graham Leggett Date: Tue, 21 Sep 2010 20:43:44 +0000 Subject: [PATCH] mod_cache: Give the cache provider the opportunity to choose to cache or not cache based on the buckets present in the brigade, such as the presence of a FILE bucket. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@999630 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 5 +++++ modules/cache/cache_storage.c | 4 ++-- modules/cache/mod_cache.c | 2 +- modules/cache/mod_cache.h | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index 32e5c20e90..a4b6c03eba 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,11 @@ Changes with Apache 2.3.9 + *) mod_cache: Give the cache provider the opportunity to choose to cache + or not cache based on the buckets present in the brigade, such as the + presence of a FILE bucket. + [Graham Leggett] + *) mod_authz_core: Allow authz providers to check args while reading the config and allow to cache parsed args. [Stefan Fritsch] diff --git a/modules/cache/cache_storage.c b/modules/cache/cache_storage.c index cfc0fdfaa0..4c822d6cd9 100644 --- a/modules/cache/cache_storage.c +++ b/modules/cache/cache_storage.c @@ -66,7 +66,7 @@ int cache_remove_url(cache_request_rec *cache, apr_pool_t *p) * decide whether or not it wants to cache this particular entity. * If the size is unknown, a size of -1 should be set. */ -int cache_create_entity(request_rec *r, apr_off_t size) +int cache_create_entity(request_rec *r, apr_off_t size, apr_bucket_brigade *in) { cache_provider_list *list; cache_handle_t *h = apr_pcalloc(r->pool, sizeof(cache_handle_t)); @@ -86,7 +86,7 @@ int cache_create_entity(request_rec *r, apr_off_t size) list = cache->providers; /* for each specified cache type, delete the URL */ while (list) { - switch (rv = list->provider->create_entity(h, r, key, size)) { + switch (rv = list->provider->create_entity(h, r, key, size, in)) { case OK: { cache->handle = h; cache->provider = list->provider; diff --git a/modules/cache/mod_cache.c b/modules/cache/mod_cache.c index 753afba81f..cb087a26c6 100644 --- a/modules/cache/mod_cache.c +++ b/modules/cache/mod_cache.c @@ -1004,7 +1004,7 @@ static int cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) /* no cache handle, create a new entity only for non-HEAD requests */ if (!cache->handle && !r->header_only) { - rv = cache_create_entity(r, size); + rv = cache_create_entity(r, size, in); info = apr_pcalloc(r->pool, sizeof(cache_info)); /* We only set info->status upon the initial creation. */ info->status = r->status; diff --git a/modules/cache/mod_cache.h b/modules/cache/mod_cache.h index e46f2be55d..eae2646c7e 100644 --- a/modules/cache/mod_cache.h +++ b/modules/cache/mod_cache.h @@ -236,7 +236,7 @@ typedef struct { apr_status_t (*recall_headers) (cache_handle_t *h, request_rec *r); apr_status_t (*recall_body) (cache_handle_t *h, apr_pool_t *p, apr_bucket_brigade *bb); int (*create_entity) (cache_handle_t *h, request_rec *r, - const char *urlkey, apr_off_t len); + const char *urlkey, apr_off_t len, apr_bucket_brigade *bb); int (*open_entity) (cache_handle_t *h, request_rec *r, const char *urlkey); int (*remove_url) (cache_handle_t *h, apr_pool_t *p); @@ -388,7 +388,7 @@ CACHE_DECLARE(apr_table_t *)ap_cache_cacheable_hdrs_out(apr_pool_t *pool, */ #define MOD_CACHE_REQUEST_REC "mod_cache_request_rec" int cache_remove_url(cache_request_rec *cache, apr_pool_t *p); -int cache_create_entity(request_rec *r, apr_off_t size); +int cache_create_entity(request_rec *r, apr_off_t size, apr_bucket_brigade *in); int cache_select(request_rec *r); apr_status_t cache_generate_key_default( request_rec *r, apr_pool_t*p, char**key ); -- 2.40.0