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 */