Checkout Tools
  • last updated 6 hours ago
Constraints: committers
Constraints: files
Constraints: dates
At long last, promote mod_cache and friends out of experimental/.

Also, take quick pass through docs files to remove experimental label for them.

Reviewed by: Paul Querna, Bill Stoddard, Justin Erenkrantz

  1. … 44 more files in changeset.
general property cleanup

  1. … 712 more files in changeset.
fixed a type match warning on NetWare

mod_cache: Add CacheIgnoreHeaders directive.

(Justin made some minor tweaks to the patch.)

PR: 30399

Submitted by: R�diger Pl�m <>

Reviewed by: Justin Erenkrantz

  1. … 6 more files in changeset.
use the correct struct for CacheDisable.

(cache_disable instead of cache_enable)

PR: 31128

Submitted by: Edward Rudd <eddie>

  1. … 1 more file in changeset.
the compiler warns about possibly uninitialized values. He may be right.

Try to correctly follow RFC 2616 13.3 on validating stale cache responses by

teaching mod_cache's cache_select_url and cache_save_filter how to deal with

this corner case.

* modules/experimental/cache_storage.c

(cache_select_url): If we have a stale entry, save the handle so that

cache_save_filter can use it later, and make the request conditional.

* modules/experimental/cache_util.c

(ap_cache_request_is_conditional): Take in a table rather than request_rec.

* modules/experimental/mod_cache.c

(cache_out_filter): Fix bogus comment.

(cache_save_filter): If we have already responded to the client, block all

data; correctly merge in 'stale' handles that are not really stale; set

r->status where appropriate; serve cached response if 'fresh'

* modules/experimental/mod_cache.h

(cache_info): Add a status field.

(cache_request_rec): Add stale handle field and note we may block responses.

(ap_cache_request_is_conditional): Update prototype.

* modules/experimental/mod_disk_cache.c

(store_headers): Use cache_info status instead of r->status.

* modules/experimental/mod_mem_cache.c

(recall_headers): Properly recall the status field.

(store_headers): Store the status field via cache_info status.

  1. … 6 more files in changeset.
Fix up some comments in CACHE_SAVE filter and fix a minor style nit.

No functional changes.

Fix Expires (freshness) handling in mod_cache.

Previously, if the cached copy was stale, the response would go into an

indeterminate state. Therefore, the freshness check must be done before we

'accept' the response and, if it fails (i.e. stale), we can't allow any side


This caused a number of changes to how mod_disk_cache reads its headers as

ap_scan_script_header_err() purposely has side-effects and that's

unacceptable. So, factor out only what we need.

Also, remove the broken conditional filter code as you can't reliably alter the

filter list once the response is started. (Regardless, cache_select_url()

has the freshness checks now.)

Assist to Sascha Schumann for reporting mod_cache was busted.

  1. … 6 more files in changeset.

Eliminate several unused variables, observe a file size -> cache entry size

overflow, and reorder a few headers so we compile clean.

  1. … 2 more files in changeset.
Remove cache hooks and custom vtable format in favor of the ap_provider_* API.

Cache-related configuration directives remain the same.

  1. … 5 more files in changeset.
Avoid confusion when reading mod_cache code. write_ and read_ often imply

network code; store_ and recall_ are more understandable prefixes in this


Reviewed by: Roy Fielding, Cliff Woolley

  1. … 4 more files in changeset.
* modules/experimental/mod_cache.c: Rename CACHE_IN to CACHE_SAVE. Our

standard in-tree convention is _IN is for input filters. That's not what

this filter did, so that caused confusion.

* modules/experimental/mod_cache.c: Delay no-store check until saving.

(It's a corner case with little benefit in the mainline.)

(Some nearby style nits also resolved in this patch.)

Reviewed by: Bill Stoddard

* modules/experimental/mod_cache.c (cache_url_handler): Rewrite to be more

understandable. Also, remove bogus checks for MAX_URL_LENGTH and declining

'/'-terminated URLs.

Reviewed by: Bill Stoddard

parse content-length correctly using new apr_strtoff function

adding 304 support for if-Modified-Since request header,

if a fresh cached entity is present.

Reviewed by: Paul J. Reder

fix name of The Apache Software Foundation

  1. … 361 more files in changeset.
apply Apache License, Version 2.0

  1. … 262 more files in changeset.
update license to 2004.

  1. … 281 more files in changeset.
get rid of _FOREACH

  1. … 15 more files in changeset.

This fixes the cache code so that responses can be cached if they have

an Expires header but no Etag or Last-Modified headers. PR 23130.

Submitted by: <>

Reviewed by: Paul J. Reder

  1. … 1 more file in changeset.

Fix a couple of AIX xlc_r compiler issues in the cache code I previously

committed. [Paul J. Reder]

  1. … 2 more files in changeset.

Modified the cache code to be header-location agnostic. Also

fixed a number of other cache code bugs related to PR 15852.

Includes a patch submitted by Sushma Rai <>.

This fixes mod_mem_cache but not mod_disk_cache yet so I'm not

closing the PR since that is what they are using. [Paul J. Reder]

  1. … 6 more files in changeset.
Remove a useless and annoying debug message

finished that boring job:

update license to 2003.

Happy New Year! ;-))

  1. … 271 more files in changeset.
Rename CacheMaxStreamingBuffer to MCacheMaxStreamingBuffer. Move

implementation of MCacheMaxStreamingBuffer from mod_cache to

mod_mem_cache. MCacheMaxStreamingBuffer now defaults to the

lesser of 100,000 bytes or MCacheMaxCacheObjectSize. This should

eliminate the need for explicitly coding MCacheMaxStreamingBuffer

in most configurations. [Bill Stoddard]

  1. … 4 more files in changeset.
SHould be using ths string form of exp (which is exps).

Reported by:Joe Orton

mod_cache: Fix PR 15113, a core dump in cache_in_filter when

a redirect occurs. The code was passing a format string and

integer to apr_pstrcat. Changed to apr_psprintf. [Paul J. Reder]

  1. … 1 more file in changeset.
A few more lazy initializations. No function change (I hope :-)