From: Graham Leggett Date: Tue, 26 Sep 2006 20:35:42 +0000 (+0000) Subject: Allocate the temporary copy file buffer from a pool. X-Git-Tag: 2.3.0~2116 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ac2f4bff6cf2998e7594530256de438846cf009;p=thirdparty%2Fapache%2Fhttpd.git Allocate the temporary copy file buffer from a pool. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450188 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/cache/mod_disk_cache.c b/modules/cache/mod_disk_cache.c index d57108a67ea..a7cc92776a9 100644 --- a/modules/cache/mod_disk_cache.c +++ b/modules/cache/mod_disk_cache.c @@ -985,7 +985,8 @@ static apr_status_t store_headers(cache_handle_t *h, request_rec *r, cache_info } -static apr_status_t copy_body(apr_file_t *srcfd, apr_off_t srcoff, +static apr_status_t copy_body(apr_pool_t *p, + apr_file_t *srcfd, apr_off_t srcoff, apr_file_t *destfd, apr_off_t destoff, apr_off_t len) { @@ -993,7 +994,11 @@ static apr_status_t copy_body(apr_file_t *srcfd, apr_off_t srcoff, apr_size_t size; apr_finfo_t finfo; apr_time_t starttime = apr_time_now(); - char buf[CACHE_BUF_SIZE]; + + char *buf = apr_palloc(p, CACHE_BUF_SIZE); + if (!buf) { + return APR_ENOMEM; + } if(srcoff != 0) { rc = apr_file_seek(srcfd, APR_SET, &srcoff); @@ -1178,7 +1183,7 @@ static apr_status_t store_body(cache_handle_t *h, request_rec *r, e = APR_BRIGADE_FIRST(bb); a = e->data; - rv = copy_body(a->fd, e->start, dobj->tfd, 0, + rv = copy_body(r->pool, a->fd, e->start, dobj->tfd, 0, dobj->file_size); if(rv != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_ERR, rv, r->server,