To facilitate the merging of our large mod_disk_cache fixup I will
send small patches that fix various bugs so that they can be applied
incrementally to trunk with relevant discussion limited to those
patches and me not having to respin entire patchsets due to trivial
fixes to patches like this one.
If you want larger patchsets instead of this "baby steps" approach
that's fine by me, but small pieces usually allows for easier review
when merging.
This patch and the jumbo patch with all fixes are also attached to bug
#39380.
This patch makes it possible to configure mod_disk_cache to cache
files that are larger than the LFS limit. While at it, I implemented
error handling so it doesn't accept things like "CacheMinFileSize
barf" anymore.
Actual LFS support (current code eats all address-space/memory in
32bit boxes) will come in a separate patch once this is commited.
/Nikke
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Niklas Edmundsson, Admin @ {acc,hpc2n}.umu.se | [EMAIL PROTECTED]
---------------------------------------------------------------------------
"Ensign. How do I get to Ten-Forward?" - Picard
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=Index: mod_disk_cache.c
===================================================================
--- mod_disk_cache.c (revision 416365)
+++ mod_disk_cache.c (working copy)
@@ -334,14 +334,14 @@ static int create_entity(cache_handle_t
if (len > conf->maxfs) {
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"disk_cache: URL %s failed the size check "
- "(%" APR_OFF_T_FMT " > %" APR_SIZE_T_FMT ")",
+ "(%" APR_OFF_T_FMT " > %" APR_OFF_T_FMT ")",
key, len, conf->maxfs);
return DECLINED;
}
if (len >= 0 && len < conf->minfs) {
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"disk_cache: URL %s failed the size check "
- "(%" APR_OFF_T_FMT " < %" APR_SIZE_T_FMT ")",
+ "(%" APR_OFF_T_FMT " < %" APR_OFF_T_FMT ")",
key, len, conf->minfs);
return DECLINED;
}
@@ -1026,7 +1026,7 @@ static apr_status_t store_body(cache_han
if (dobj->file_size > conf->maxfs) {
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"disk_cache: URL %s failed the size check "
- "(%" APR_OFF_T_FMT ">%" APR_SIZE_T_FMT ")",
+ "(%" APR_OFF_T_FMT ">%" APR_OFF_T_FMT ")",
h->cache_obj->key, dobj->file_size, conf->maxfs);
/* Remove the intermediate cache file and return non-APR_SUCCESS */
file_cache_errorcleanup(dobj, r);
@@ -1050,7 +1050,7 @@ static apr_status_t store_body(cache_han
if (dobj->file_size < conf->minfs) {
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"disk_cache: URL %s failed the size check "
- "(%" APR_OFF_T_FMT "<%" APR_SIZE_T_FMT ")",
+ "(%" APR_OFF_T_FMT "<%" APR_OFF_T_FMT ")",
h->cache_obj->key, dobj->file_size, conf->minfs);
/* Remove the intermediate cache file and return non-APR_SUCCESS */
file_cache_errorcleanup(dobj, r);
@@ -1137,15 +1137,25 @@ static const char
{
disk_cache_conf *conf = ap_get_module_config(parms->server->module_config,
&disk_cache_module);
- conf->minfs = atoi(arg);
+
+ if (apr_strtoff(&conf->minfs, arg, NULL, 0) != APR_SUCCESS ||
+ conf->minfs < 0)
+ {
+ return "CacheMinFileSize argument must be a non-negative integer
representing the min size of a file to cache in bytes.";
+ }
return NULL;
}
+
static const char
*set_cache_maxfs(cmd_parms *parms, void *in_struct_ptr, const char *arg)
{
disk_cache_conf *conf = ap_get_module_config(parms->server->module_config,
&disk_cache_module);
- conf->maxfs = atoi(arg);
+ if (apr_strtoff(&conf->maxfs, arg, NULL, 0) != APR_SUCCESS ||
+ conf->maxfs < 0)
+ {
+ return "CacheMaxFileSize argument must be a non-negative integer
representing the max size of a file to cache in bytes.";
+ }
return NULL;
}
Index: mod_disk_cache.h
===================================================================
--- mod_disk_cache.h (revision 416365)
+++ mod_disk_cache.h (working copy)
@@ -88,8 +88,8 @@ typedef struct {
apr_size_t cache_root_len;
int dirlevels; /* Number of levels of subdirectories */
int dirlength; /* Length of subdirectory names */
- apr_size_t minfs; /* minumum file size for cached files */
- apr_size_t maxfs; /* maximum file size for cached files */
+ apr_off_t minfs; /* minimum file size for cached files */
+ apr_off_t maxfs; /* maximum file size for cached files */
} disk_cache_conf;
#endif /*MOD_DISK_CACHE_H*/