From: Graham Leggett Date: Wed, 30 Nov 2011 22:00:43 +0000 (+0000) Subject: Backport: X-Git-Tag: 2.3.16~67 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3b02fd05010c122faac58ba5d3ed37b69fc9e554;p=apache Backport: mod_cache: Apply the API change that allows future mod_cache providers to invalidate cache entries, which will fix PR15868. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1208824 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/include/ap_mmn.h b/include/ap_mmn.h index e37c67b47f..7b5a40228f 100644 --- a/include/ap_mmn.h +++ b/include/ap_mmn.h @@ -371,12 +371,13 @@ * add pool to ap_errorlog_info. * 20111130.0 (2.4.0-dev) c->remote_ip becomes c->peer_ip and r->client_ip, * c->remote_addr becomes c->peer_addr and r->client_addr + * 20111201.0 (2.5.0-dev) Add invalidate_entity() to the cache provider. */ #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */ #ifndef MODULE_MAGIC_NUMBER_MAJOR -#define MODULE_MAGIC_NUMBER_MAJOR 20111130 +#define MODULE_MAGIC_NUMBER_MAJOR 20111201 #endif #define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */ diff --git a/modules/cache/mod_cache.c b/modules/cache/mod_cache.c index 295636e6c9..69639326cd 100644 --- a/modules/cache/mod_cache.c +++ b/modules/cache/mod_cache.c @@ -1558,6 +1558,10 @@ static int cache_status(cache_handle_t *h, request_rec *r, apr_table_setn(r->subprocess_env, AP_CACHE_MISS_ENV, reason); break; } + case AP_CACHE_INVALIDATE: { + apr_table_setn(r->subprocess_env, AP_CACHE_INVALIDATE_ENV, reason); + break; + } } apr_table_setn(r->subprocess_env, AP_CACHE_STATUS_ENV, reason); diff --git a/modules/cache/mod_cache.h b/modules/cache/mod_cache.h index b65e56a948..90c3766ce2 100644 --- a/modules/cache/mod_cache.h +++ b/modules/cache/mod_cache.h @@ -109,17 +109,20 @@ typedef struct { const char *urlkey); int (*remove_url) (cache_handle_t *h, request_rec *r); apr_status_t (*commit_entity)(cache_handle_t *h, request_rec *r); + apr_status_t (*invalidate_entity)(cache_handle_t *h, request_rec *r); } cache_provider; typedef enum { AP_CACHE_HIT, AP_CACHE_REVALIDATE, - AP_CACHE_MISS + AP_CACHE_MISS, + AP_CACHE_INVALIDATE } ap_cache_status_e; #define AP_CACHE_HIT_ENV "cache-hit" #define AP_CACHE_REVALIDATE_ENV "cache-revalidate" #define AP_CACHE_MISS_ENV "cache-miss" +#define AP_CACHE_INVALIDATE_ENV "cache-invalidate" #define AP_CACHE_STATUS_ENV "cache-status" diff --git a/modules/cache/mod_cache_disk.c b/modules/cache/mod_cache_disk.c index 0ccfe22b6c..87fdef6816 100644 --- a/modules/cache/mod_cache_disk.c +++ b/modules/cache/mod_cache_disk.c @@ -1325,6 +1325,11 @@ static apr_status_t commit_entity(cache_handle_t *h, request_rec *r) return APR_SUCCESS; } +static apr_status_t invalidate_entity(cache_handle_t *h, request_rec *r) +{ + return APR_ENOTIMPL; +} + static void *create_dir_config(apr_pool_t *p, char *dummy) { disk_cache_dir_conf *dconf = apr_pcalloc(p, sizeof(disk_cache_dir_conf)); @@ -1502,7 +1507,8 @@ static const cache_provider cache_disk_provider = &create_entity, &open_entity, &remove_url, - &commit_entity + &commit_entity, + &invalidate_entity }; static void disk_cache_register_hook(apr_pool_t *p)