Justin Erenkrantz wrote:
I'd be fine with it matching store_body's prototype. (Which is what you
have.) -- justin
Here's a patch that does this.
--
Brian Akins
Lead Systems Engineer
CNN Internet Technologies
diff -ru httpd-trunk.orig/modules/cache/mod_cache.c
httpd-trunk.new2/modules/cache/mod_cache.c
--- httpd-trunk.orig/modules/cache/mod_cache.c 2005-08-09 11:51:09.471251000
-0400
+++ httpd-trunk.new2/modules/cache/mod_cache.c 2005-08-18 13:41:31.414487623
-0400
@@ -206,7 +206,7 @@
r->status = cache->handle->cache_obj->info.status;
/* recall_headers() was called in cache_select_url() */
- cache->provider->recall_body(cache->handle, r->pool, bb);
+ cache->provider->recall_body(cache->handle, r, bb);
/* This filter is done once it has served up its content */
ap_remove_output_filter(f);
@@ -695,7 +695,7 @@
APR_BRIGADE_INSERT_TAIL(bb, bkt);
}
else {
- cache->provider->recall_body(cache->handle, r->pool, bb);
+ cache->provider->recall_body(cache->handle, r, bb);
}
cache->block_response = 1;
diff -ru httpd-trunk.orig/modules/cache/mod_cache.h
httpd-trunk.new2/modules/cache/mod_cache.h
--- httpd-trunk.orig/modules/cache/mod_cache.h 2005-07-13 15:23:03.882379000
-0400
+++ httpd-trunk.new2/modules/cache/mod_cache.h 2005-08-18 13:41:04.332966989
-0400
@@ -192,7 +192,7 @@
apr_status_t (*store_headers)(cache_handle_t *h, request_rec *r,
cache_info *i);
apr_status_t (*store_body)(cache_handle_t *h, request_rec *r,
apr_bucket_brigade *b);
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);
+ apr_status_t (*recall_body)(cache_handle_t *h, request_rec *r,
apr_bucket_brigade *b);
int (*create_entity) (cache_handle_t *h, request_rec *r,
const char *urlkey, apr_off_t len);
int (*open_entity) (cache_handle_t *h, request_rec *r,
diff -ru httpd-trunk.orig/modules/cache/mod_disk_cache.c
httpd-trunk.new2/modules/cache/mod_disk_cache.c
--- httpd-trunk.orig/modules/cache/mod_disk_cache.c 2005-08-09
11:51:09.473251000 -0400
+++ httpd-trunk.new2/modules/cache/mod_disk_cache.c 2005-08-18
13:42:57.209296497 -0400
@@ -116,7 +116,7 @@
static apr_status_t store_headers(cache_handle_t *h, request_rec *r,
cache_info *i);
static apr_status_t store_body(cache_handle_t *h, request_rec *r,
apr_bucket_brigade *b);
static apr_status_t recall_headers(cache_handle_t *h, request_rec *r);
-static apr_status_t recall_body(cache_handle_t *h, apr_pool_t *p,
apr_bucket_brigade *bb);
+static apr_status_t recall_body(cache_handle_t *h, request_rec *r,
apr_bucket_brigade *bb);
static apr_status_t read_array(request_rec *r, apr_array_header_t* arr,
apr_file_t *file);
@@ -699,12 +699,12 @@
return APR_SUCCESS;
}
-static apr_status_t recall_body(cache_handle_t *h, apr_pool_t *p,
apr_bucket_brigade *bb)
+static apr_status_t recall_body(cache_handle_t *h, request_rec *r,
apr_bucket_brigade *bb)
{
apr_bucket *e;
disk_cache_object_t *dobj = (disk_cache_object_t*) h->cache_obj->vobj;
- e = apr_bucket_file_create(dobj->fd, 0, (apr_size_t) dobj->file_size, p,
+ e = apr_bucket_file_create(dobj->fd, 0, (apr_size_t) dobj->file_size,
r->pool,
bb->bucket_alloc);
APR_BRIGADE_INSERT_HEAD(bb, e);
e = apr_bucket_eos_create(bb->bucket_alloc);
diff -ru httpd-trunk.orig/modules/cache/mod_mem_cache.c
httpd-trunk.new2/modules/cache/mod_mem_cache.c
--- httpd-trunk.orig/modules/cache/mod_mem_cache.c 2005-07-13
15:23:03.871381000 -0400
+++ httpd-trunk.new2/modules/cache/mod_mem_cache.c 2005-08-18
13:42:11.626836265 -0400
@@ -642,7 +642,7 @@
return rc;
}
-static apr_status_t recall_body(cache_handle_t *h, apr_pool_t *p,
apr_bucket_brigade *bb)
+static apr_status_t recall_body(cache_handle_t *h, request_rec *r,
apr_bucket_brigade *bb)
{
apr_bucket *b;
mem_cache_object_t *mobj = (mem_cache_object_t*) h->cache_obj->vobj;
@@ -650,8 +650,8 @@
if (mobj->type == CACHE_TYPE_FILE) {
/* CACHE_TYPE_FILE */
apr_file_t *file;
- apr_os_file_put(&file, &mobj->fd, mobj->flags, p);
- b = apr_bucket_file_create(file, 0, mobj->m_len, p, bb->bucket_alloc);
+ apr_os_file_put(&file, &mobj->fd, mobj->flags, r->pool);
+ b = apr_bucket_file_create(file, 0, mobj->m_len, r->pool,
bb->bucket_alloc);
}
else {
/* CACHE_TYPE_HEAP */